چرا سرور من گاهی کند میشود؟ بررسی آماری
کندی سرور یکی از پرتکرارترین مشکلات است و در عین حال یکی از مبهمترینها. عیبیابی درست، نیمی از راهحل است.
گام اول: مسئله را کمیسازی کنید
قبل از هر ابزاری، سه سؤال بپرسید:
- کندی دائم است یا مقطعی؟
- کل سیستم کند است یا فقط یک سرویس؟
- از چه زمانی شروع شده و چه تغییری رخ داده است؟
اگر میتوانید، زمانبندی دقیق شروع مشکل را پیدا کنید. این معمولاً به یک تغییر مشخص اشاره دارد.
ابزار اول: free
سادهترین نقطه شروع. تفاوت حافظه در دسترس و بافر را ببینید.
اگر حافظه آزاد کم است اما بافر زیاد، وضعیت طبیعی است. لینوکس از حافظه برای کش استفاده میکند و این خوب است.
نگرانکننده وقتی است که swap زیاد باشد یا available کم شود.
ابزار دوم: vmstat
این ابزار آمار لحظهای پردازنده، حافظه، دیسک و صف را نشان میدهد.
“bash vmstat 1 10 “
ستونهای مهم:
- r: تعداد پروسههای آماده اجرا. اگر از تعداد هسته بیشتر باشد، پردازنده گلوگاه است.
- b: تعداد پروسههای در انتظار دیسک. اگر این عدد بالا بماند، دیسک گلوگاه است.
- wa: درصد زمان انتظار برای دیسک.
- si و so: میزان جابهجایی به و از swap.
ابزار سوم: iostat
برای تحلیل دقیق دیسک:
“bash iostat -x 1 10 “
ستونهای کلیدی:
- %util: درصد زمانی که دیسک مشغول بوده. بالای ۸۰ یعنی گلوگاه.
- await: میانگین زمان انتظار درخواست.
- avgrq-sz: میانگین اندازه درخواست. بالای ۵۱۲ کیلوبایت باید بررسی شود.
ابزار چهارم: sar
برای تحلیل تاریخی که کندی ممکن است فقط در ساعات خاصی رخ دهد:
“bash sar -q # بار پردازنده sar -b # فعالیت دیسک sar -r # حافظه “
این ابزار دادهها را جمعآوری میکند و شما میتوانید ببینید دیروز ساعت ۱۴ چه اتفاقی افتاده است.
سناریوهای رایج
صف دیسک بالا: یا دیسک کند است یا خیلی زیاد از آن استفاده میشود. تعداد پروسههای در حال انتظار را بررسی کنید.
مصرف CPU بالا: با top ببینید کدام پروسه مصرف میکند. اگر یک پروسه خاص است، شاید یک حلقه بیپایان باشد.
استفاده از swap: یا حافظه کم است یا تنظیمات swappiness اشتباه است.
انتشار شبکهای: مصرف CPU در فرایندهای شبکه بالا میرود. با ss یا netstat بررسی کنید.
اشتباه رایج: دستکاری بیهدف
تغییر پارامترهای سیستم بدون تشخیص دقیق، فقط مشکل را پنهان میکند و گاهی بدتر. اول اندازه بگیرید، بعد اقدام کنید.
ابزار مفید دیگر: pidstat
این ابزار به شما میگوید کدام پروسه دقیقاً چه منابعی را مصرف میکند. اگر نمیدانید مشکل از کجاست، این ابزار بهترین نقطه شروع است.