مفاهیم پایه

ترافیک ورودی و خروجی سرور؛ کدام حساب می‌شود و چطور مصرف را کم کنیم؟

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۶ دقیقه

Gbps ≠ GBمفاهیم پایهترافیک ورودی و خروجیسرور؛ کدام حساب می‌شود وچطور مصرف را کم کنیم؟مجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

ترافیک ورودی داده‌ای است که به سرور می‌رسد (مثل آپلود کاربران و دانلود به‌روزرسانی‌ها) و ترافیک خروجی داده‌ای است که سرور می‌فرستد (مثل صفحات و فایل‌هایی که بازدیدکنندگان دریافت می‌کنند). بیشتر ارائه‌دهندگان فقط یا عمدتاً ترافیک خروجی را محاسبه می‌کنند، اما مدل‌ها متفاوت است. برای کم کردن هزینه، ترافیک را با vnStat اندازه بگیرید و خروجی را با فشرده‌سازی، بهینه‌سازی تصاویر و CDN کاهش دهید.

ورودی و خروجی از دید چه کسی؟

اولین سردرگمی دربارهٔ ترافیک سرور، جهت آن است. وقتی کاربری فایلی را از سایت شما «دانلود» می‌کند، از دید سرور این داده خروجی است؛ یعنی سرور آن را آپلود می‌کند. وقتی کاربری عکسی را در سایت شما «آپلود» می‌کند، از دید سرور ورودی است.

در اصطلاحات فنی:

  • Inbound / Ingress / RX: داده‌ای که وارد سرور می‌شود (Receive).
  • Outbound / Egress / TX: داده‌ای که از سرور خارج می‌شود (Transmit).

برخی ارائه‌دهندگان ایرانی برای سادگی از دید سرور می‌نویسند «دانلود» و منظورشان داده‌ای است که سرور دریافت می‌کند؛ برخی دیگر از دید کاربر. پیش از مقایسهٔ پلن‌ها، دقیقاً بپرسید منظور از «دانلود» یا «آپلود» در صورتحساب چیست.

جهت ترافیک از دید سرور
ورودی به سرورخروجی از سرورکاربرآپلود عکسسرورRX ورودی / TX خروجیبازدیدکنندهدریافت صفحه و تصاویرورودی به سرورخروجی از سرورکاربرآپلود عکسسرورRX ورودی / TX خروجیبازدیدکنندهدریافت صفحه و تصاویر
شکل ۱ آپلود کاربر برای سرور ورودی است و دانلود بازدیدکننده خروجی؛ بیشتر صورتحساب‌ها بر اساس خروجی است.

چه چیزهایی ترافیک ورودی می‌سازند؟

  • فایل‌هایی که کاربران در سایت یا برنامهٔ شما آپلود می‌کنند؛
  • دانلود به‌روزرسانی‌های سیستم‌عامل و پکیج‌ها (apt upgrade، docker pull، npm install)؛
  • دریافت نسخهٔ پشتیبان از سرور دیگر؛
  • درخواست‌های HTTP کاربران (که معمولاً بسیار کوچک‌اند)؛
  • حملات و اسکن‌ها که حجم زیادی ترافیک ناخواسته به سرور می‌فرستند.

چه چیزهایی ترافیک خروجی می‌سازند؟

  • صفحات HTML، تصاویر، ویدیو، CSS و جاوااسکریپتی که بازدیدکنندگان دریافت می‌کنند؛
  • پاسخ‌های API به اپلیکیشن موبایل یا سرویس‌های دیگر؛
  • ارسال نسخهٔ پشتیبان به سرور یا فضای ذخیره‌سازی دیگر؛
  • ارسال ایمیل؛
  • هر داده‌ای که ربات یا اسکریپت شما به سرویس دیگری می‌فرستد.

در بیشتر سایت‌ها و سرویس‌های عمومی، ترافیک خروجی چندین برابر ورودی است؛ چون هر بازدید درخواستی کوچک و پاسخی بزرگ دارد.

ارائه‌دهندگان کدام را حساب می‌کنند؟

مدل‌های رایج:

  1. فقط خروجی: رایج‌ترین مدل در ارائه‌دهندگان ابری بین‌المللی. ورودی رایگان است.
  2. مجموع ورودی و خروجی: هر دو جهت از یک سهمیه کم می‌شود.
  3. بیشینهٔ دو جهت: هر کدام بیشتر بود، ملاک است.
  4. بدون محاسبه (نامحدود): با محدودیت‌های Fair Use؛ جزئیات را در مقالهٔ ترافیک نامحدود واقعاً نامحدود است؟ ببینید.

علاوه بر جهت، برخی ارائه‌دهندگان ترافیک داخلی (بین سرورهای یک دیتاسنتر یا شبکهٔ خصوصی) را رایگان حساب می‌کنند. در سرورهای ایران، گاهی ترافیک داخل کشور و بین‌الملل نرخ متفاوتی دارد.

در سرور ابری ایران کلودیفای، فقط ترافیک دانلود حساب می‌شود و آپلود رایگان است؛ هزینهٔ هر گیگابایت فعلاً ۱٬۲۵۰ است و هر چند دقیقه یک بار از کیف پول کسر می‌شود. جزئیات دقیق را در مقالهٔ محاسبهٔ ترافیک سرور ایران بخوانید.

منابع ترافیک ورودی و خروجی
ورودی (RX)
  • آپلود کاربران
  • apt، docker pull و npm install
  • دریافت بکاپ از جای دیگر
  • اسکن‌ها و حملات
در برابر
خروجی (TX)
  • صفحات و تصاویر سایت
  • پاسخ‌های API
  • ارسال بکاپ به بیرون
  • ایمیل و درخواست‌های ربات
شکل ۲ شناختن منبع هر جهت، اولین قدم برای کاهش هزینهٔ ترافیک است.

اندازه‌گیری ترافیک روی سرور

vnStat برای آمار بلندمدت

vnStat سبک است، در پس‌زمینه اجرا می‌شود و مصرف را به تفکیک ساعت، روز و ماه نگه می‌دارد:

sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -h
vnstat -m

ستون rx ورودی و ستون tx خروجی است.

iftop و nethogs برای لحظهٔ حال

اگر ترافیک ناگهان بالا رفته و می‌خواهید بدانید به کجا می‌رود یا کدام برنامه مصرف می‌کند:

sudo apt install -y iftop nethogs
sudo iftop -i eth0
sudo nethogs eth0

iftop اتصال‌ها را با مقصد و سرعت نشان می‌دهد و nethogs مصرف را به تفکیک پروسه. نام کارت شبکه را با ip -br link پیدا کنید؛ ممکن است eth0، ens3 یا نام دیگری باشد.

کاهش ترافیک خروجی

چون معمولاً خروجی محاسبه می‌شود و خروجی بخش بزرگ مصرف است، بیشترین اثر را این اقدامات دارند:

  1. CDN برای فایل‌های ثابت: تصاویر، ویدیو و فایل‌های CSS و JS از کش CDN تحویل می‌شوند و ترافیک خروجی سرور اصلی به‌شدت کاهش می‌یابد. محاسبهٔ عددی در کاهش هزینهٔ ترافیک با CDN.
  2. فشرده‌سازی متنی: Gzip یا Brotli حجم HTML، CSS، JS و JSON را به‌مقدار زیادی کم می‌کند. آموزش در Gzip و Brotli در Nginx.
  3. بهینه‌سازی تصاویر: تبدیل به WebP یا AVIF و ذخیره در ابعاد واقعی نمایش.
  4. کش مرورگر: با هدرهای Cache-Control درست، کاربر تکراری فایل‌ها را دوباره دانلود نمی‌کند.
  5. مسدود کردن ربات‌های بی‌فایده: برخی خزنده‌ها حجم زیادی صفحه دانلود می‌کنند بدون این‌که برای شما ارزشی داشته باشند. لاگ را بررسی و آن‌ها را محدود کنید.
  6. جلوگیری از لینک مستقیم (Hotlink): سایت‌های دیگر ممکن است تصاویر یا فایل‌های شما را مستقیم در صفحات خود نمایش دهند و ترافیک شما را مصرف کنند.

کاهش ترافیک ورودی

اگر ورودی هم محاسبه می‌شود:

  • به‌جای دانلود مکرر ایمیج‌های داکر، ایمیج‌ها را کش کنید و فقط هنگام نیاز pull کنید.
  • برای به‌روزرسانی سیستم‌عامل از میرورهای نزدیک استفاده کنید.
  • با فایروال، اسکن‌ها و درخواست‌های مخرب را زودتر مسدود کنید؛ Fail2ban و UFW کمک می‌کنند.
root@server: ~
$ ip -br linketh0             UP             ...$ vnstat -d      day          rx      |     tx      |    total$ sudo nethogs eth0PID USER     PROGRAM            DEV   SENT      RECEIVED... www-data nginx: worker       eth0  ... KB/s  ... KB/s$ 
شکل ۳ vnStat آمار روزانه و nethogs مصرف لحظه‌ای هر پروسه را نشان می‌دهد.

افزایش ناگهانی ترافیک

اگر مصرف بی‌دلیل بالا رفت، ممکن است سرور هک شده باشد و برای ارسال اسپم یا حمله استفاده شود، یا یک ربات خزنده سایت را پویش کند. با iftop و nethogs مقصد و پروسه را پیدا کنید و در صورت مشاهدهٔ رفتار مشکوک، نشانه‌های هک شدن سرور را بررسی کنید. تفاوت مفهومی ترافیک و پهنای باند را هم در پهنای باند یا ترافیک؟ ببینید.

یک مثال: سایت فروشگاهی کوچک

فرض کنید یک فروشگاه اینترنتی کوچک دارید که روزانه چند صد بازدیدکننده دارد. هر بازدیدکننده به‌طور میانگین چند صفحه می‌بیند و هر صفحه با تصاویر محصولات حجم قابل توجهی دارد. در این سایت، تقریباً همهٔ ترافیک خروجی از تصاویر محصولات می‌آید و HTML سهم کوچکی دارد. ورودی هم بیشتر از آپلود تصاویر جدید توسط مدیر فروشگاه و به‌روزرسانی‌های دوره‌ای سیستم است.

اگر این فروشگاه تصاویر را بدون فشرده‌سازی و در ابعاد اصلی دوربین بارگذاری کرده باشد، با تبدیل آن‌ها به WebP در ابعاد مناسب، حجم هر صفحه به‌مراتب کمتر می‌شود. سپس با اتصال CDN، همان تصاویر کوچک‌شده هم از کش تحویل داده می‌شوند و ترافیک خروجی سرور اصلی به بخش کوچکی از مقدار اولیه می‌رسد. در این سناریو، هزینهٔ ترافیک سرور با دو اقدام ساده به‌شدت پایین می‌آید و سرعت سایت هم بیشتر می‌شود.

ترافیک بکاپ را فراموش نکنید

یکی از منابع پنهان ترافیک خروجی، ارسال نسخه‌های پشتیبان به بیرون از سرور است. اگر هر شب کل فایل‌های سایت را فشرده و به سرور دیگری منتقل کنید، هر شب همان حجم کامل از ترافیک خروجی کم می‌شود. با بکاپ افزایشی، فقط فایل‌های تغییرکرده منتقل می‌شوند و مصرف بسیار کمتر است. ابزار rsync دقیقاً همین کار را انجام می‌دهد؛ روش آن را در آموزش بکاپ با rsync ببینید.

همچنین اگر سرور پشتیبان در همان دیتاسنتر یا شبکهٔ داخلی ارائه‌دهنده باشد، برخی ارائه‌دهندگان ترافیک بین آن‌ها را محاسبه نمی‌کنند. پیش از طراحی سیستم بکاپ، این موضوع را بررسی کنید.

سؤالات متداول

آپلود فایل در سایت ترافیک ورودی است یا خروجی؟

از دید سرور، فایلی که کاربر آپلود می‌کند ترافیک ورودی (RX) است. فایلی که کاربر دانلود می‌کند، از دید سرور خروجی (TX) است.

چرا ترافیک خروجی سرور من خیلی بیشتر از ورودی است؟

در سایت‌ها و سرویس‌های عمومی طبیعی است؛ هر بازدید یک درخواست کوچک و پاسخی بزرگ شامل صفحه و تصاویر دارد. CDN و فشرده‌سازی این سهم را کاهش می‌دهند.

آیا به‌روزرسانی سیستم‌عامل از سهمیهٔ ترافیک کم می‌کند؟

اگر ارائه‌دهنده ترافیک ورودی را حساب کند، بله. در مدل‌هایی که فقط خروجی محاسبه می‌شود، دانلود به‌روزرسانی‌ها هزینه‌ای ندارد.

چطور بفهمم کدام برنامه بیشترین ترافیک را مصرف می‌کند؟

ابزار nethogs مصرف شبکه را به تفکیک پروسه نشان می‌دهد و iftop مقصد اتصال‌ها را. برای آمار بلندمدت از vnStat استفاده کنید.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.