آیا دروازه VPN شما به CPU محدود است؟ ابتدا بار هر هسته را بخوانید
میانگینها رشتهای را که مهم است پنهان میکنند. بار هر هسته را در برابر یک انتقال کنترلشده بخوانید، مسیر را کنار بگذارید و سپس در هر اجرا یک تنظیم مستند را تغییر دهید.
پیش از خرید یک نمونه بزرگتر مشخص کنید به کدام یک از سه محدودیت رسیدهاید. یک هسته با بار کامل در حالی که بقیه بیکارند به کار رمزنگاری بهازای هر جریان اشاره دارد. اشباع همه هستهها در طول انتقال به ظرفیت کل اشاره دارد. CPU پایین با شمار فزاینده بازفرستها به مسیر اشاره دارد. هر کدام نخستین گام متفاوتی دارند و تنها یکی از آنها با نمونهای بزرگتر حل میشود.
سه محدودیت، یک جدول، سه اصلاح
| Limit | Reading during a transfer | First move |
|---|---|---|
| Single thread | one core near 100%, siblings idle | spread flows across workers |
| Aggregate CPU | every core busy, load average climbs | capacity, or less work per byte |
| Path or provider | low CPU, retransmits or steal time high | MTU, loss, host contention |
ردیفها را بهعنوان تشخیص بخوانید، نه مرحله. یک رشته با 100% در حالی که بقیه بیکارند رایجترین نتیجه روی دروازهای است که یک تونل بزرگ را حمل میکند، زیرا رمزنگاری آن جریان روی یک هسته اجرا میشود. مشغول بودن همه هستهها در طول انتقال یعنی دستگاه از پیش بیشترین کاری را که میتواند انجام میدهد. CPU پایین با بازفرستهای رو به افزایش یعنی پردازنده منتظر شبکهای است که پیوسته داده از دست میدهد.
آنها را به همین ترتیب شواهد اصلاح کنید. پخش جریانها میان کارگرها به حالت اول کمک میکند و برای دومی کاری نمیکند. نمونه بزرگتر به دومی کمک میکند و در اولی پول را هدر میدهد. اصلاح MTU یا افت تنها چیزی است که به سومی میرسد. خرید ظرفیت پیش از آنکه بدانید در کدام ردیف هستید نسخه گرانقیمت حدس زدن است.
رشته میخشده را از میزبان مشغول جدا کنید
با مصرف هر هسته شروع کنید تا یک هسته میخشده نتواند در یک میانگین پنهان شود. یک اجرا در طول انتقال نشان میدهد بار یکنواخت است یا پرشی. هر دو شکل آموزندهاند، و نمایه پرشی اغلب یعنی پنجره نمونهگیری فعالیت زمانبند را گرفته است نه رمزنگاری را.
mpstat -P ALL 1 5
هسته مشغول را به یک فرایند و سپس به یک رشته نسبت دهید. اجرای پیگیر زیر رشتههای والد و فرزند را با هم نگه میدارد، که وقتی دیمون بهازای هر اتصال شاخه میزند اهمیت دارد:
pidstat -u -t -p $(pgrep -f 'openvpn|wireguard|ipsec') 1 10
رمزنگاری هسته هرگز در شمارنده فرایند فضای کاربر دیده نمیشود. رشتهها را جداگانه نمونهگیری کنید و آن نما را با حسابداری فرایند مقایسه کنید:
top -H -b -n 1 | head -20
شمارندههای سوکت را آخر بخوانید، زیرا آنها تعیین میکنند که CPU بیشتر اصلاً کمک میکند یا نه. بالا رفتن بازفرستها با CPU ثابت مشکل پردازنده نیست. انتقال را هنگام نمونهگیری در حال اجرا نگه دارید، وگرنه اعداد یک ماشین بیکار را توصیف میکنند:
ss -ti | grep -E 'retrans|cwnd|rtt'
یک انتقال کنترلشده، دو بار اجرا شده
شمارندههای بیکار چیزی را ثابت نمیکنند و مقایسه با یک نقطه پایانی تصادفی بسیار کم ثابت میکند. یک کلاینت، یک مقصد و یک انتقال نمونه که مجاز به اجرای آن هستید انتخاب کنید، سپس گذردهی و تأخیر تعاملی را در همان پنجره ثبت کنید. دروازه میتواند اشباع شود در حالی که یک کپی انبوه هنوز کامل میشود، و منحنی تأخیر همان چیزی است که کاربران واقعاً حس میکنند. انتقال، شمار کلاینتها و نسخه دیمون را کنار اعداد بنویسید.
اجرا را با چند جریان موازی تکرار کنید. رشد با جریانها به پنجرهبندی هر جریان اشاره دارد؛ ثابت ماندن با یک هسته میخشده به پردازش اشاره دارد.
سپس یک بار دیگر با توقف بارهای کاری اختیاری تکرار کنید. یک پشتیبانگیری، یک ارسالکننده گزارش یا یک پایگاه داده روی همان میزبان میتواند میانگین مشغولی بسازد که هیچ ارتباطی با تونلها ندارد. اگر CPU هنوز میخشده است و میزبان در غیر این صورت ساکت است، شواهد به فرایند VPN اشاره میکنند. اگر پایین بیاید، همسایه را اندازه میگرفتید و دروازه هرگز مشکل نبوده است.
پیش از خرید سختافزار مسیر را کنار بگذارید
بازفرستهای رو به افزایش، پنجره ازدحام در حال کوچک شدن و زمان رفتوبرگشت رو به رشد همه از پردازنده دور اشاره میکنند. MTU تونل را با MTU مسیر مقایسه کنید، پیوند زیرین را برای افت بررسی کنید و تأیید کنید که لینک بالاروی خود کلاینت محدودیت نیست. دروازه بزرگتر پیوندی را که بسته میریزد تعمیر نمیکند، و کاربران هر دو خرابی را با همان واژهها توصیف میکنند. شمارنده بازفرست آنها را در چند دقیقه جدا میکند.
روی سرور مجازی، سنجههای ارائهدهنده را به سنجههای مهمان بیفزایید. زمان دزدیدهشده همان چیزی است که فروش بیشازحد را درون مهمان آشکار میکند و هیچ تنظیمی درون مهمان آن را برنمیدارد. شمارندههای مهمان میزبان را نمیبینند، پس نمودار تمیز مهمان اثبات میزبان سالم نیست.
یک تغییر، یک اندازهگیری
فرضیهای را که شواهد پشتیبانی میکند انتخاب کنید، سپس دقیقاً یک تنظیم پشتیبانیشده را تغییر دهید: شمار کارگرها، یک گزینه تخلیه مستند، یا اندازه نمونه. OpenVPN راهنمای عیبیابی کارایی را درباره همین تفکیک میان پردازش و انتقال منتشر میکند: عیبیابی کارایی OpenVPN.
تأیید کنید که گزینه تخلیه واقعاً فعال است بهجای اعتماد به پرچم، سپس همان انتقال را دوباره اجرا کنید و مشابه را با مشابه مقایسه کنید. این تنها راه تشخیص بهبود واقعی از یک بعدازظهر آرام است. یک نقطه بازرسی قابل بازگردانی نگه دارید، زیرا در تغییر دوم است که مردم رد کدامیک کمک کرد را گم میکنند. یک متغیر در هر اجرا برای یک روز کند و برای یک ماه سریع است.
احراز هویت یا مجموعه رمز را برای بهتر نشان دادن نمودار تضعیف نکنید. اگر CPU هنوز از نشانه پیروی نمیکند، به جای ارتقا بر پایه حدس به بررسی مسیر و برنامه بازگردید.