دروازه‌ای که روی بار 0.4 نشسته است باز هم می‌تواند برای هر کاربر پشتش کُند باشد. میانگین بار، وظایفی را می‌شمارد که قابل اجرا هستند یا در خواب غیرقابل‌قطع گیر کرده‌اند، و روی میزبان چهار هسته‌ای یک فرایند اشباع‌شده کافی است تا آن را به سمت 1.0 هل دهد، در حالی که سه هسته بیکار نشسته‌اند. خواندن این عدد به‌عنوان ظرفیت مازاد، رایج‌ترین اشتباه در انتخاب نقطه پایانی است. چیزی که واقعاً یک تونل را محدود می‌کند معمولاً یکی از چهار چیز است: یک هسته مشغول، پهنای باند بالادستی، صف جلوی آن، یا یک سیاست به‌ازای هر نشست که هیچ‌کس مستند نکرده است.

میانگین بار وظایف را می‌شمارد، نه توان عبوری

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

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

cat /proc/loadavg
mpstat -P ALL 1 1
top -H -b -n 1 | head -n 20

دستور سوم مهم‌ترین دستور روی میزبان‌های VPN است. پردازش بسته در فضای کاربر در OpenVPN 2.x عمدتاً به‌ازای هر فرایند سریالی است، بنابراین یک ریسمان مشغول می‌تواند سقف شود در حالی که داشبورد ظرفیت بیکار فراوان گزارش می‌دهد. اگر یک ریسمان در دوره کندی شما بیشتر یک هسته را بگیرد، میزبان در کل کم‌تجهیز نیست؛ او در بُعدی محدود شده است که تصادفاً اهمیت دارد.

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

پهنای باند بالادستی و صف جلوی آن

شمارنده‌های رابط به پرسش پهنای باندی پاسخ می‌دهند که ارقام CPU نمی‌توانند. آن‌ها همچنین ظرفیت را از افت جدا می‌کنند، که نقص‌های متفاوتی با راه‌حل‌های متفاوت هستند:

ip -s link show dev eth0
tc -s qdisc show dev eth0
nstat -az TcpRetransSegs TcpExtTCPLostRetransmit

پیوندی که در طول آزمون شما نزدیک به نرخ تخصیص‌یافته‌اش باشد توضیح است، و هیچ مقدار CPU اضافه‌ای آن را تغییر نمی‌دهد. خط qdisc جزئیاتی را اضافه می‌کند که برای ترافیک تعاملی مهم است: انباشت و افت‌ها به شما می‌گویند آیا بسته‌ها پیش از خروج در صف منتظر می‌مانند. صفی که زیر یک بارگذاری بزرگ پر می‌شود دقیقاً همان نشانه‌ای را تولید می‌کند که مردم سرور دور را سرزنش می‌کنند، یعنی تماس‌های کند روی اتصالی که در بنچمارک هنوز خوب عمل می‌کند.

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

تعداد نشست‌ها تقاضا را توصیف می‌کند، نه ظرفیت مازاد

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

Number on the pageWhat it is really measuringWhat it cannot tell you
Connected usersHow many sessions hold an addressHow much each one is transferring
Load or scoreWhatever the operator chose to publishWhether that definition matches your task
UptimeHow long since the process startedCurrent capacity, queue depth or packet loss
Distance or pingRound-trip time on a small probeThroughput under sustained transfer

روی میزبانی که خودتان کنترل می‌کنید، فایل وضعیت بُعد گمشده را می‌دهد. OpenVPN یک عکس لحظه‌ای دوره‌ای می‌نویسد که شمارنده‌های بایتی به‌ازای هر کلاینت را در بر می‌گیرد، و این کافی است تا ببینید آیا یک نشست مسئول تمام پهنای باند بالادستی است:

status /run/openvpn/server.status 10
# then, after at least one interval
grep -E "^CLIENT_LIST" /run/openvpn/server.status

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

محدودیت‌های هر نشست در دل سیاست پنهان است

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

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

دو نقطه پایانی را با یک وظیفه ثابت مقایسه کنید

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

شکست‌ها را به همان دقت موفقیت‌ها ثبت کنید. مجموعه‌ای که در آن سه نقطه پایانی کار می‌کنند و یکی به پایان زمان می‌رسد از چهار عدد سرعت گویاتر است، چون به مشکل مسیر یا سیاست اشاره دارد نه ظرفیت. هر مورد را دست‌کم دو بار اجرا کنید؛ یک نمونه کند در شبکه اشتراکی چیزی را اثبات نمی‌کند.

در پایان، عددهایی را که جمع کردید همراه با ادعایی که پشتیبانی می‌کنند نگه دارید. "این نقطه پایانی انتقال را در همان پنجره‌ای انجام داد که دیگری متوقف شد" قابل دفاع است، در حالی که "این نقطه پایانی سریع‌تر است" دعوتی به بحثی است که با امتیاز صفحه اصلی نمی‌توانید ببرید. راهنمای OpenVPN 2.6 فایل وضعیت و گزینه‌های شکل‌دهی را مستند می‌کند اگر به دستورهای دقیق سمت میزبان نیاز دارید.

مقالات مرتبط