وضعیت لحظه‌ای همه سرویس‌های ابر باران، شفاف و برای همه

مشاهده وضعیت شبکه

پشتیبانی فنی ۲۴ ساعته

مقاله

چگونه سرعت پهنای باند سرور را در لینوکس تست کنیم؟ (Speedtest CLI)

چگونه سرعت پهنای باند سرور را در لینوکس تست کنیم؟ (Speedtest CLI)

آموزش شبکه و مدیریت سرور لینوکس

تست سرعت سرور لینوکس با Speedtest CLI و iperf3

آموزش نصب ابزارها، اندازه‌گیری سرعت دانلود و آپلود، بررسی توان عملیاتی شبکه، تست UDP و عیب‌یابی سرعت پایین سرور

در یک نگاه

برای تست سرعت سرور لینوکس نباید فقط به یک عدد دانلود و آپلود اکتفا کرد. مقصد آزمایش، تأخیر شبکه، مسیر ارتباطی، منابع سیستم و شرایط انتقال داده هم روی نتیجه اثر می‌گذارند.

در این مقاله یاد می‌گیرید چه زمانی از Speedtest CLI و چه زمانی از iperf3 استفاده کنید، چگونه آن‌ها را نصب و اجرا کنید و نتایج را درست تفسیر کنید.

تفاوت سرعت اینترنت، پهنای باند و توان عملیاتی

سه مفهوم در این بحث مرتبط‌اند، اما یکی نیستند:

  • پهنای باند (ظرفیت پورت): حداکثر ظرفیت نظری لینک، مثلاً ۱ گیگابیت بر ثانیه.
  • سرعت ثبت‌شده در Speedtest: نتیجه اتصال به یک سرور آزمایش مشخص در همان لحظه.
  • توان عملیاتی (Throughput) در iperf3: نرخ انتقال داده بین دو سیستم مشخص که خودتان انتخاب کرده‌اید.
نکته فنی: پورت ۱ گیگابیتی لزوماً در هر آزمایش ۱۰۰۰ مگابیت بر ثانیه نشان نمی‌دهد. حتی در بهترین حالت، بخشی از ظرفیت صرف هدرهای پروتکل‌ها (Ethernet، IP و TCP) می‌شود.

چرا سرعت واقعی کمتر از ظرفیت پورت است؟

  • تأخیر (RTT) و پنجره TCP: سرعت یک اتصال TCP تقریباً از رابطه «اندازه پنجره ÷ RTT» محدود می‌شود. برای مثال، با پنجره ۶۴ کیلوبایت و RTT برابر ۱۰۰ میلی‌ثانیه، سقف نظری حدود ۵٫۲ مگابیت بر ثانیه است. سیستم‌های امروزی با Window Scaling این سقف را بالا می‌برند، اما رابطه همچنان برقرار است.
  • افت بسته (Packet Loss): در TCP، حتی افت کم می‌تواند نرخ انتقال را کاهش دهد.
  • مقصد آزمایش: سرور مقصد یا مسیر میان دو نقطه ممکن است گلوگاه باشد، نه سرور شما.
  • منابع سیستم: در سرعت‌های بالا، CPU یا محدودیت‌های مجازی‌سازی می‌تواند مانع رسیدن به ظرفیت کامل شود.

تفاوت Mbps و MB/s

هر ۸ بیت برابر با یک بایت است. بنابراین سرعت ۸۰۰ مگابیت بر ثانیه از نظر محاسباتی معادل ۱۰۰ مگابایت بر ثانیه است. سرعت واقعی دانلود فایل معمولاً به‌دلیل سربار پروتکل‌ها کمی کمتر خواهد بود.

واحد معنا معادل تقریبی
Mbps مگابیت بر ثانیه ۸ Mbps = ۱ MB/s
MB/s مگابایت بر ثانیه ۱ MB/s = ۸ Mbps
Gbps گیگابیت بر ثانیه ۱ Gbps = ۱۰۰۰ Mbps

تفاوت Speedtest CLI و iperf3

Speedtest CLI اتصال سرور به یک سرور آزمایش عمومی را می‌سنجد و سرعت دانلود، آپلود و تأخیر را نشان می‌دهد. این ابزار برای بررسی اولیه اتصال اینترنت سرور مناسب است.

iperf3 برای اندازه‌گیری توان عملیاتی بین دو سیستم مشخص طراحی شده است. آزمایش TCP و UDP را پشتیبانی می‌کند و برای ارزیابی ارتباط بین دو سرور تحت کنترل شما مناسب است.

ویژگی Speedtest CLI iperf3
مقصد آزمایش سرور آزمایش عمومی (قابل انتخاب) سیستمی که خودتان تعیین می‌کنید
نیاز به دسترسی به مقصد خیر بله، باید iperf3 را روی مقصد اجرا کنید
خروجی اصلی دانلود، آپلود، تأخیر، جیتر نرخ انتقال، تکرار ارسال (Retransmit) و در UDP جیتر و افت بسته
کنترل شرایط آزمایش محدود زیاد (مدت، جهت، تعداد جریان، پروتکل)
کاربرد بررسی سریع اینترنت سرور عیب‌یابی دقیق ارتباط بین دو نقطه
توجه: بسته‌ای که با دستور apt install speedtest-cli نصب می‌شود، نسخه غیررسمی پایتونی است و با ابزار رسمی Ookla یکی نیست. در این مقاله ابزار رسمی با دستور speedtest معرفی شده است.
هشدار مصرف ترافیک: هر آزمایش سرعت ترافیک مصرف می‌کند. برای مثال، یک تست ۳۰ ثانیه‌ای iperf3 با سرعت ۱ گیگابیت بر ثانیه حدود ۳٫۷۵ گیگابایت داده منتقل می‌کند. اگر سرویس شما سقف ترافیک ماهانه دارد، مدت و تعداد آزمایش‌ها را محدود کنید.

نصب و اجرای Speedtest CLI

دستور نصب به توزیع لینوکس بستگی دارد.

اوبونتو و دبیان

ابتدا curl را نصب کنید:

sudo apt-get update
sudo apt-get install curl

مخزن رسمی Ookla را اضافه کنید:

curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash

سپس ابزار را نصب کنید:

sudo apt-get install speedtest

راکی لینوکس، آلما لینوکس و CentOS

curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | sudo bash
sudo yum install speedtest
ملاحظه امنیتی: اجرای مستقیم اسکریپت دانلودشده با دسترسی مدیریتی ریسک دارد. ابتدا اسکریپت را دانلود و محتوای آن را بررسی کنید، سپس اجرا کنید. اگر مخزن برای نسخه توزیع شما پشتیبانی نشد، می‌توانید بسته فشرده (tgz) را از صفحه رسمی Speedtest CLI دریافت کنید.

اجرای تست سرعت

speedtest

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

speedtest --accept-license --accept-gdpr

خروجی دستور speedtest در ترمینال سرور لینوکس

انتخاب سرور آزمایش

اگر می‌خواهید آزمایش با یک مقصد مشخص انجام شود، ابتدا فهرست سرورهای نزدیک را ببینید و شناسه سرور را بدهید:

speedtest -L
speedtest -s SERVER_ID

چگونه خروجی را بخوانیم؟

  • Server: سرور آزمایش انتخاب‌شده. تغییر آن بین دو آزمایش، مقایسه نتایج را مختل می‌کند.
  • Idle Latency: تأخیر رفت‌وبرگشت در حالت بدون بار، همراه با جیتر.
  • Download: نرخ دریافت داده از سرور آزمایش.
  • Upload: نرخ ارسال داده به سرور آزمایش.
  • Packet Loss: درصد افت بسته. ممکن است برای برخی سرورها N/A باشد.

برای خروجی قابل پردازش در اسکریپت‌ها از JSON استفاده کنید و برای دیدن گزینه‌های نسخه نصب‌شده، راهنمای برنامه را اجرا کنید:

speedtest --format=json
speedtest --help

نتایج را در چند نوبت ثبت کنید. اگر مقصد در هر آزمایش فرق کند، اختلاف نتیجه لزوماً به معنی تغییر ظرفیت پورت نیست.

نصب و استفاده از iperf3

iperf3 باید روی هر دو سیستم نصب باشد: یکی نقش سرور و دیگری نقش کلاینت را دارد.

نصب iperf3

اوبونتو و دبیان:

sudo apt-get update
sudo apt-get install iperf3

راکی لینوکس و آلما لینوکس:

sudo dnf install iperf3

نسخه نصب‌شده را بررسی کنید:

iperf3 --version

نمودار ارتباط سرور و کلاینت iperf3 برای تست سرعت بین دو سرور

پیش‌نیازها

  • دسترسی مدیریتی برای نصب iperf3 روی هر دو سیستم
  • آدرس IP سرور مقصد
  • اجازه برقراری ارتباط بین دو سیستم در فایروال

مرحله اول: اجرای سرور iperf3

روی سرور مقصد اجرا کنید:

iperf3 -s

در حالت پیش‌فرض، iperf3 روی پورت 5201 منتظر اتصال می‌ماند. این پورت برای آزمایش TCP و UDP هر دو استفاده می‌شود. اگر می‌خواهید سرور فقط یک آزمایش را انجام دهد و بعد خودکار بسته شود، گزینه -1 را اضافه کنید:

iperf3 -s -1

سرور iperf3 در هر لحظه فقط یک آزمایش را انجام می‌دهد. اگر هم‌زمان دو کلاینت وصل شوند، دومی خطای «server is busy» می‌گیرد.

مرحله دوم: اجرای تست از کلاینت

در دستور زیر، SERVER_IP را با آدرس IP واقعی سرور مقصد جایگزین کنید:

iperf3 -c SERVER_IP -t 30

این دستور یک آزمایش TCP به مدت ۳۰ ثانیه انجام می‌دهد. در این حالت، کلاینت داده را به سمت سرور ارسال می‌کند، یعنی سرعت آپلود از دید کلاینت سنجیده می‌شود.

مرحله سوم: آزمایش جهت معکوس

iperf3 -c SERVER_IP -t 30 -R

با گزینه -R سرور داده را به کلاینت می‌فرستد و سرعت دانلود از دید کلاینت سنجیده می‌شود. مقایسه این دو نتیجه تفاوت دو جهت ارتباط را نشان می‌دهد. در نسخه‌های جدیدتر iperf3 (۳٫۷ به بعد)، گزینه --bidir هر دو جهت را هم‌زمان آزمایش می‌کند.

مرحله چهارم: آزمایش با چند جریان TCP

برای اجرای چند جریان موازی از گزینه -P استفاده کنید:

iperf3 -c SERVER_IP -t 30 -P 4

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

مرحله پنجم: بستن دسترسی پس از آزمایش

هشدار امنیتی: پورت آزمایش را بدون محدودیت روی اینترنت عمومی باز نگذارید. دسترسی را فقط برای IP کلاینت باز کنید و بعد از پایان آزمایش، قانون را حذف و سرویس iperf3 را متوقف کنید.

مثال برای فایروال UFW (آدرس CLIENT_IP را جایگزین کنید):

sudo ufw allow from CLIENT_IP to any port 5201
# پس از پایان آزمایش:
sudo ufw delete allow from CLIENT_IP to any port 5201

اگر از firewalld یا iptables استفاده می‌کنید، قانون معادل را در همان ابزار تعریف و پس از آزمایش حذف کنید.

تست UDP و بررسی Packet Loss

iperf3 علاوه بر TCP از UDP هم پشتیبانی می‌کند. در آزمایش UDP، نرخ ارسال هدف را شما مشخص می‌کنید و خروجی، نرخ انتقال، جیتر و درصد بسته‌های ازدست‌رفته را گزارش می‌دهد.

نکته مهم: نرخ پیش‌فرض آزمایش UDP در iperf3 فقط حدود ۱ مگابیت بر ثانیه است. بنابراین بدون گزینه -b نتیجه معنی‌داری از ظرفیت لینک نمی‌گیرید. دستور زیر نرخ هدف ۱۰۰ مگابیت بر ثانیه را به مدت ۲۰ ثانیه آزمایش می‌کند:

iperf3 -c SERVER_IP -u -b 100M -t 20

عدد ۱۰۰M فقط نمونه است. نرخ هدف را متناسب با ظرفیت مسیر انتخاب کنید و از نرخ‌های کم شروع کنید. اگر نرخ ارسال از ظرفیت مسیر بیشتر باشد، افت بسته به‌دلیل اشباع لینک بالا می‌رود و عدد حاصل، کیفیت واقعی مسیر را نشان نمی‌دهد.

اگر فایروال فعال است، برای این آزمایش باید پورت UDP شماره 5201 هم برای IP کلاینت باز باشد. در UFW، قانونی که نوع پروتکل را مشخص نکرده باشد هر دو را باز می‌کند.

نتیجه یک آزمایش UDP به‌تنهایی کیفیت همه ترافیک واقعی سرور را مشخص نمی‌کند. آن را در کنار تأخیر و نتایج چند آزمایش دیگر تحلیل کنید.

عیب‌یابی سرعت پایین سرور لینوکس

بررسی منابع سیستم

ابتدا مطمئن شوید پردازنده یا حافظه تحت فشار غیرعادی نیست:

top
free -h

در خروجی top، مقدار st (Steal Time) در سرورهای مجازی اهمیت دارد. عدد بالا یعنی میزبان فیزیکی منابع پردازنده را از ماشین شما گرفته و می‌تواند روی عملکرد شبکه هم اثر بگذارد.

بررسی رابط شبکه

شمارنده‌های خطا و افت بسته را ببینید:

ip -s link

برای دیدن سرعت لینک ثبت‌شده در کارت شبکه (نام رابط را با نام واقعی جایگزین کنید):

ip -br link
ethtool eth0 | grep Speed

در سرورهای مجازی، گاهی این مقدار «Unknown» نشان داده می‌شود. این موضوع نشانه خرابی نیست و به نوع مجازی‌سازی بستگی دارد. شمارنده‌های خطا را در طول زمان بررسی کنید، چون یک عدد به‌تنهایی علت مشکل را مشخص نمی‌کند.

بررسی مسیر ارتباطی

مسیر شبکه را با traceroute یا mtr بررسی کنید:

mtr -rwc 100 SERVER_IP

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

مقایسه نتایج در شرایط مشابه

  • آزمایش‌ها را چند بار و در ساعت‌های مختلف تکرار کنید.
  • زمان، مقصد و ابزار هر آزمایش را ثبت کنید.
  • در iperf3، تست عادی و معکوس را مقایسه کنید.
  • هم‌زمان با آزمایش، مصرف CPU و وضعیت رابط شبکه را ببینید.
  • در صورت امکان، بین دو مقصد تحت کنترل خودتان آزمایش کنید تا مقصد عمومی عامل خطا نباشد.

اگر پس از این بررسی‌ها نتیجه همچنان پایین بود و مشکل از سمت زیرساخت به نظر می‌رسید، نتایج آزمایش‌ها (دستورها، زمان و خروجی) را برای پشتیبانی ارائه‌دهنده سرویس ارسال کنید. گزارش مستند، پیگیری را سریع‌تر می‌کند.

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

آیا Speedtest سرعت تضمین‌شده پورت سرور را نشان می‌دهد؟

خیر. این ابزار عملکرد اتصال به سرور آزمایش را در همان شرایط اندازه‌گیری می‌کند و ظرفیت تضمین‌شده پورت را اثبات نمی‌کند.

چرا سرعت دانلود با سرعت آپلود متفاوت است؟

مسیر ارتباطی، شرایط شبکه، مقصد آزمایش و محدودیت‌های سیستم یا ارائه‌دهنده می‌توانند باعث این تفاوت شوند. برای بررسی دقیق‌تر، هر دو جهت را در شرایط مشابه آزمایش کنید.

آیا برای اجرای iperf3 باید پورت فایروال باز باشد؟

بله، اگر فایروال فعال باشد، باید پورت 5201 را (TCP و برای آزمایش UDP، پروتکل UDP) باز کنید. بهتر است این دسترسی فقط برای IP کلاینت و فقط در زمان آزمایش باز باشد.

آیا iperf3 سرعت اینترنت عمومی را اندازه می‌گیرد؟

خیر. iperf3 توان عملیاتی ارتباط بین کلاینت و سرور مشخص را می‌سنجد. نتیجه به مسیر همان ارتباط وابسته است و به‌تنهایی نماینده سرعت کل اینترنت نیست.

چند بار باید تست سرعت را انجام داد؟

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

تفاوت speedtest-cli و Speedtest CLI چیست؟

speedtest-cli بسته غیررسمی پایتونی است. Speedtest CLI رسمی را شرکت Ookla ارائه می‌دهد و با دستور speedtest اجرا می‌شود. نتایج این دو ممکن است با هم فرق داشته باشد.

جمع‌بندی

برای بررسی اولیه اتصال اینترنت سرور لینوکس، Speedtest CLI گزینه سریع و مناسبی است. اگر هدف شما سنجش توان عملیاتی بین دو سرور مشخص است، iperf3 کنترل بیشتری روی شرایط آزمایش می‌دهد.

برای نتیجه قابل‌اعتماد، به یک عدد اکتفا نکنید. چند آزمایش را در کنار تأخیر، وضعیت منابع، مسیر شبکه و محدودیت‌های مقصد تحلیل کنید و برای هر آزمایش، دستور و شرایط را ثبت کنید. اگر پروژه شما به پورت پرسرعت نیاز دارد، می‌توانید سرور ابری پورت ۱۰G ابر باران را بررسی کنید.

به سرور ابری با پورت پرسرعت نیاز دارید؟

پلن‌های سرور ابری پورت ۱۰G ابر باران را بررسی کنید و با توجه به نیاز پروژه، سرویس مناسب را سفارش دهید.

مشاهده و خرید سرور ابری پورت ۱۰G

منابع فنی

اشتراک‌گذاری: