در این مقاله از بلاگ رهام کلود، خیلی ساده و کاربردی میخوایم بررسی کنیم که دلیل کندی سرور چیه، چرا بعضی سرورها بعد از مدتی عملکرد خوبی ندارن و چطور میشه
به شکل اصولی و حرفهای مشکل رو پیدا و برطرف کرد.
کند شدن سرور معمولا یک اتفاق ناگهانی و بدون دلیل نیست.
گاهی مصرف CPU بالا میره، بعضی وقتها RAM پر میشه، ممکنه هارد یا SSD تحت فشار باشه یا حتی یک سرویس، نرمافزار یا تنظیم اشتباه باعث بشه سرعت سرور پایین بیاد.
نکته مهم اینه که قبل از هر اقدامی، باید بفهمید مشکل دقیقا از کجا شروع شده.
خیلی از افراد وقتی با کندی مواجه میشن، سریع سراغ ارتقای منابع میرن؛ مثلا RAM یا CPU رو بیشتر میکنن.
اما همیشه افزایش منابع راه حل اصلی نیست. ممکنه یک نرمافزار مشکلدار، یک کوئری سنگین دیتابیس یا حتی تنظیمات اشتباه باعث مصرف غیرعادی منابع شده باشه.
فهرست موضوعات:
- دلیل شروع کندی در سرور
- مصرف بالای CPU
- کمبود RAM و استفاده زیاد Swap
- فشار بر دیسک و بالا بودن I/O
- پر شدن دیسک
- دیتابیس کند
- ترافیک و درخواستهای غیرعادی
- مشکلات شبکه و ارتباطات
- سرویس یا نرمافزار مشکلدار
- عیبیابی حرفهای
- ارتقا منابع سرور
- جلوگیری از کندی دوباره سرور
- نتیجهگیری
- سوالات متداول
دلیل شروع کندی در سرور
برای پیدا کردن دلیل کندی سرور باید چند بخش مهم رو بررسی کنید.
سرور مثل یک سیستم بههمپیوسته است؛ اگر یکی از بخشها تحت فشار باشه، ممکنه روی عملکرد کل سیستم تاثیر بذاره.
فرض کنید یک سایت روی سرور دارید که تا چند روز قبل بدون مشکل کار میکرده، اما الان باز شدن صفحاتش خیلی طول میکشه.
در این شرایط ممکنه مشکل از CPU باشه، اما شاید دیتابیس درگیر پردازشهای سنگین شده یا فضای دیسک تقریبا پر شده.
حتی ممکنه یک بکاپگیری خودکار در ساعات پرترافیک اجرا بشه و باعث کند شدن کل سرور بشه.
به همین دلیل، عیبیابی حرفهای با حدس زدن شروع نمیشه؛ بلکه باید وضعیت واقعی منابع و سرویسها بررسی بشه.

مصرف بالای CPU
یکی از رایجترین دلایل کندی سرور، استفاده بیش از حد از CPU هست.
وقتی پردازنده بیشتر زمان خودش رو صرف پردازش درخواستهای مختلف میکنه، اجرای سایر پردازشها هم با تاخیر انجام میشه.
این اتفاق میتونه به دلایل مختلفی رخ بده. مثلا تعداد بازدیدکنندگان سایت زیاد شده، یک اسکریپت بهینه نیست، رباتها درخواستهای زیادی ارسال میکنن یا یک نرمافزار
وارد حلقه پردازشی شده.
در لینوکس میتونید با ابزارهایی مثل top یا htop بررسی کنید که کدوم پردازش بیشترین مصرف CPU رو داره.
در ویندوز سرور هم Task Manager و Performance Monitor میتونن اطلاعات خوبی در اختیارتون قرار بدن.
مثلا اگر متوجه شدید یک پردازش PHP دائما ۹۰ یا ۱۰۰ درصد CPU رو درگیر کرده، قبل از ارتقای سرور بهتره بررسی کنید که این پردازش مربوط به کدوم سایت یا اسکریپته
و چرا این مقدار منابع مصرف میکنه.
گاهی فقط با پیدا کردن و اصلاح یک افزونه، اسکریپت یا تنظیم اشتباه، مشکل بدون نیاز به ارتقای سختافزار حل میشه.

کمبود RAM و استفاده زیاد Swap
RAM هم نقش خیلی مهمی در سرعت سرور داره.
وقتی حافظه اصلی سرور پر بشه، سیستم برای ادامه فعالیت ممکنه از فضای Swap استفاده کنه.
Swap در واقع بخشی از فضای ذخیرهسازی سروره که سیستم در شرایط خاص به عنوان حافظه کمکی از اون استفاده میکنه.
اما چون سرعت SSD یا هارد معمولا از RAM کمتره، استفاده زیاد از Swap میتونه باعث افت محسوس عملکرد بشه.
برای مثال، فرض کنید یک سرور با ۲ گیگابایت RAM دارید و چند سرویس مختلف مثل وبسرور، دیتابیس و سرویسهای جانبی روی اون فعال هستن.
اگر مجموع مصرف این سرویسها بیشتر از ظرفیت RAM بشه، سرور ممکنه شروع به استفاده از Swap کنه و در نتیجه سرعت پاسخگویی پایین بیاد.
البته مصرف RAM بالا همیشه نشونه مشکل نیست. سیستمعاملها معمولا از حافظه خالی برای Cache استفاده میکنن تا عملکرد بهتری داشته باشن.
چیزی که اهمیت داره، بررسی فشار واقعی روی حافظه و میزان استفاده مداوم از Swap هست.
فشار بر دیسک و بالا بودن I/O
گاهی CPU و RAM وضعیت خوبی دارن، اما سرور همچنان کند شده. در این شرایط باید به سراغ Disk I/O برید.
Disk I/O به میزان عملیات خواندن و نوشتن روی فضای ذخیرهسازی اشاره داره. اگر تعداد زیادی پردازش به صورت همزمان در حال خواندن یا نوشتن روی دیسک باشن، ممکنه
درخواستها در صف قرار بگیرن و سرعت سیستم پایین بیاد.
برای مثال، اجرای بکاپ از چندین سایت، اسکن امنیتی، پردازشهای سنگین دیتابیس و ذخیره فایلهای زیاد به صورت همزمان میتونه فشار زیادی روی دیسک ایجاد کنه.
فرض کنید هر شب ساعت ۲، سیستم بکاپ شروع به کار میکنه و همزمان چند سایت هم بازدید بالایی دارن.
اگر منابع ذخیرهسازی توانایی پاسخگویی به این حجم از عملیات رو نداشته باشن، کاربران ممکنه در همون بازه زمانی کندی سایت یا سرویس رو احساس کنن.
در چنین شرایطی بهتره بررسی کنید که چه پردازشهایی بیشترین استفاده از دیسک رو دارن و آیا زمانبندی اجرای اونها مناسبه یا نه.

پر شدن دیسک
یکی از سادهترین اما مهمترین دلایل کند شدن سرور، پر شدن فضای ذخیرهسازی هست.
وقتی فضای دیسک به حد زیادی پر بشه، سرویسها ممکنه نتونن فایلهای موقت، Log یا اطلاعات جدید رو به درستی ایجاد کنن.
دیتابیسها و وبسرورها هم ممکنه با مشکل مواجه بشن.
مثلا ممکنه فایلهای Log برای مدت طولانی بدون پاکسازی باقی مونده باشن یا بکاپهای قدیمی فضای زیادی رو اشغال کرده باشن.
در بعضی مواقع هم یک خطای نرمافزاری باعث میشه حجم یک فایل Log به شکل غیرعادی زیاد بشه.
بهتره همیشه فضای دیسک رو به صورت دورهای بررسی کنید و اجازه ندید ظرفیت ذخیرهسازی کاملا پر بشه.
دیتابیس کند
اگر روی سرور سایت، فروشگاه اینترنتی یا نرمافزارهای مبتنی بر دیتابیس اجرا میکنید، باید عملکرد دیتابیس رو هم جدی بگیرید.
یک کوئری غیر بهینه میتونه مقدار زیادی CPU و RAM مصرف کنه یا پردازشهای دیگه رو منتظر نگه داره.
این مشکل معمولا در سایتهایی که تعداد کاربران یا اطلاعات زیادی دارن، بیشتر دیده میشه.
مثلا یک فروشگاه اینترنتی ممکنه هزاران محصول و سفارش داشته باشه.
اگر یک افزونه یا بخش از سایت، اطلاعات زیادی رو با یک کوئری غیر بهینه پردازش کنه، سرعت سایت به مرور پایین میاد.
در چنین شرایطی، فقط افزایش CPU همیشه جواب نمیده.
شاید نیاز باشه کوئریها بررسی بشن، ایندکسهای مناسب به دیتابیس اضافه بشه یا تنظیمات MySQL و MariaDB متناسب با منابع سرور تغییر کنه.
ترافیک و درخواستهای غیرعادی
گاهی سرور واقعا مشکل فنی نداره و فقط حجم درخواستها بیشتر از توان فعلی اونه.
افزایش ناگهانی بازدید سایت، اجرای کمپین تبلیغاتی یا انتشار یک محتوا در شبکههای اجتماعی میتونه تعداد زیادی کاربر رو به سمت سرور هدایت کنه.
اما همه ترافیکها هم واقعی نیستن. ممکنه رباتها یا درخواستهای مخرب باعث افزایش تعداد اتصالها بشن.
در بعضی شرایط هم حملات DDoS یا ارسال تعداد زیادی درخواست میتونه باعث افت عملکرد بشه.
برای همین فقط بررسی مقدار ترافیک کافی نیست.
باید مشخص کنید این درخواستها از کجا میان، چه صفحاتی رو هدف قرار میدن و آیا الگوی غیرعادی در اونها وجود داره یا نه.

مشکلات شبکه و ارتباطات
گاهی کاربران تصور میکنن سرور کند شده، در حالی که مشکل از شبکه است.
تاخیر بالا، Packet Loss، مشکلات مسیریابی یا محدودیت پهنای باند میتونه باعث بشه ارتباط با سرور کند به نظر برسه.
در این شرایط ممکنه خود پردازنده، RAM و دیسک کاملا سالم باشن.
برای مثال، اگر سایت از نظر سرور در چند میلیثانیه پاسخ میده اما کاربران از یک موقعیت جغرافیایی خاص سرعت پایینی تجربه میکنن، احتمال داره مشکل مربوط به مسیر
شبکه یا ارتباط بین کاربر و دیتاسنتر باشه.
ابزارهایی مثل Ping، Traceroute و بررسی زمان پاسخگویی میتونن در تشخیص این نوع مشکلات کمک کنن.
سرویس یا نرمافزار مشکلدار
بعضی وقتها دلیل کندی سرور فقط یک سرویس ساده است که به درستی کار نمیکنه.
ممکنه یک پردازش وارد Loop شده باشه، یک افزونه وردپرس بیش از حد منابع مصرف کنه یا یک نرمافزار به دلیل باگ، تعداد زیادی پردازش ایجاد کنه.
برای مثال، ممکنه بعد از نصب یک افزونه جدید روی سایت، مصرف CPU از ۲۰ درصد به ۹۰ درصد برسه.
اگر بدون بررسی فقط منابع سرور رو افزایش بدید، ممکنه هزینه بیشتری پرداخت کنید اما ریشه اصلی مشکل همچنان باقی بمونه.
به همین دلیل، یکی از بهترین کارها اینه که تغییرات اخیر سرور رو بررسی کنید.
نصب نرمافزار جدید، آپدیت سیستم، تغییر تنظیمات یا افزایش ناگهانی ترافیک میتونه سرنخ خوبی برای پیدا کردن مشکل باشه.
عیبیابی حرفهای
عیبیابی حرفهای برای پیدایش دلیل کندی یعنی به جای تغییر همزمان همه چیز، مرحلهای جلو برید و اطلاعات جمع کنید.
اول از همه باید مشخص کنید کندی چه زمانی اتفاق میفته.
آیا سرور همیشه کنده یا فقط در ساعت خاصی از روز؟ همه سرویسها کند شدن یا فقط یک سایت؟ بعد از تغییر خاصی مشکل شروع شده؟
جواب همین سوالها میتونه مسیر عیبیابی رو کوتاهتر کنه. بعدش بهتره وضعیت CPU، RAM، Disk I/O و فضای دیسک رو بررسی کنید.
اگر یکی از این منابع، مداوم نزدیک به حداکثر ظرفیت باشه، میشه سراغ پردازشهایی رفت که باعث این فشار شدن.
در مرحله بعد، لاگ سیستم و سرویسها رو بررسی کنید.
خطاهای تکراری، اتصالات غیرعادی، کرش شدن سرویسها یا پیامهای کمبود منابع میتونن اطلاعات مهمی درباره علت مشکل بدن.
همچنین بهتره همیشه عملکرد سرور رو در طول زمان مانیتور کنید.
اگر فقط در لحظهای که مشکل ایجاد شد وضعیت سرور رو بررسی کنید، ممکنه اطلاعات کافی نداشته باشید.
ابزارهای مانیتورینگ کمک میکنن مصرف CPU، RAM، دیسک و شبکه رو در بازههای زمانی مختلف ببینید.
این موضوع باعث میشه مثلا متوجه بشید هر روز ساعت ۳ بامداد مصرف Disk I/O بالا میره یا هر زمان تعداد کاربران زیاد میشه، RAM سرور کامل پر میشه.

فرض کنید کاربران گزارش میدن که یک سایت در بعضی ساعتها خیلی کند باز میشه.
اول وضعیت CPU رو بررسی میکنید و میبینید مصرف پردازنده خیلی بالا نیست.
بعد RAM رو بررسی میکنید و مشخص میشه مقدار زیادی Swap در حال استفاده است.
با بررسی بیشتر متوجه میشید سرویس دیتابیس در ساعات مشخصی حافظه زیادی مصرف میکنه.
در ادامه Logها و پردازشها رو بررسی میکنید و متوجه میشید یک گزارشگیری سنگین هر ساعت اجرا میشه و حجم زیادی از اطلاعات دیتابیس رو پردازش میکنه.
در این شرایط ارتقای CPU احتمالا تاثیر زیادی نداره. راه حل بهتر میتونه بهینهسازی کوئری، تغییر زمان اجرای گزارش یا محدود کردن منابع اون پردازش باشه.
این مثال نشون میده که پیدا کردن دلیل کندی سرور فقط با نگاه کردن به درصد CPU امکانپذیر نیست و باید همه بخشها کنار هم بررسی بشن.
ارتقا منابع سرور
بعد از اینکه بررسی کردید نرمافزار یا تنظیم اشتباهی باعث مصرف منابع نشده، ممکنه واقعا سرور به منابع بیشتری نیاز داشته باشه.
اگر CPU به صورت مداوم تحت فشار بالاست، RAM برای سرویسهای فعال کافی نیست یا Disk I/O دائما به سقف توان خودش میرسه، ارتقای منابع میتونه تصمیم منطقی باشه.
اما بهتره ارتقا بر اساس اطلاعات انجام بشه، نه حدس. مثلا اگر مشکل اصلی RAM هست، افزایش فضای ذخیرهسازی تاثیری روی سرعت نداره.
اگر فشار اصلی روی دیسک هست، اضافه کردن CPU هم لزوما مشکل رو حل نمیکنه.
جلوگیری از کندی دوباره سرور
بهترین راه اینه که منتظر ایجاد مشکل نمونید. مانیتورینگ مداوم سرور میتونه قبل از اینکه کاربران با کندی مواجه بشن، نشانههای اولیه رو به شما نشون بده.
بررسی مصرف منابع، کنترل فضای دیسک، مدیریت فایلهای Log، بهینهسازی دیتابیس و بررسی سرویسهای غیرضروری میتونه تاثیر زیادی روی پایداری سرور داشته باشه.
همچنین بهتره تغییرات مهم روی سرور ثبت بشن. اگر بعد از نصب یک نرمافزار یا تغییر تنظیمات، عملکرد سرور افت کرد، راحتتر میتونید ارتباط بین تغییر ایجادشده و مشکل جدید رو پیدا کنید.
بکاپگیری و اسکنهای سنگین هم بهتره در زمانهایی انجام بشن که فشار کمتری روی سرور وجود داره.
نتیجهگیری
پیدا کردن دلیل کندی سرور همیشه به این معنی نیست که سرور شما ضعیفه و باید منابع بیشتری خریداری کنید.
در بسیاری از مواقع، یک سرویس مشکلدار، دیتابیس غیر بهینه، فشار روی Disk I/O، پر شدن RAM یا حتی یک تغییر کوچک در تنظیمات میتونه باعث افت عملکرد بشه.
بهترین روش اینه که قبل از هر اقدامی، وضعیت واقعی سرور رو بررسی کنید.
CPU، RAM، فضای دیسک، Disk I/O، شبکه و سرویسهای فعال رو کنار هم ببینید و سعی کنید الگوی مشکل رو پیدا کنید.
وقتی عیبیابی بر اساس اطلاعات انجام بشه، هم سریعتر به نتیجه میرسید و هم از هزینههای غیرضروری برای ارتقای منابع جلوگیری میکنید.
در نهایت، یک سرور پایدار فقط به منابع زیاد نیاز نداره؛ بلکه به مانیتورینگ درست، تنظیمات مناسب و مدیریت اصولی هم نیاز داره.
اگر این مطلب برایتان مفید بود، پیشنهاد میکنیم به مقاله چگونه مصرف CPU و RAM سرور را کاهش دهیم؟ نیز در بلاگ ما سر بزنید.
سوالات متداول
مهمترین دلیل کندی سرور چیست؟
یک دلیل ثابت برای همه سرورها وجود نداره.
مصرف بالای CPU، کمبود RAM، استفاده زیاد از Swap، فشار Disk I/O، مشکلات دیتابیس، پر شدن فضای دیسک و ترافیک غیرعادی از مهمترین دلایل هستن.
چطور بفهمیم مشکل از CPU است یا RAM؟
باید مصرف هر دو منبع رو بررسی کنید. اگر CPU دائما نزدیک به حداکثر ظرفیت باشه، ممکنه پردازنده گلوگاه سیستم باشه.
اگر RAM پر شده و Swap زیاد استفاده میشه، احتمالا مشکل مربوط به حافظه است.
آیا ارتقای سرور همیشه مشکل کندی را حل میکند؟
خیر. اگر یک افزونه، نرمافزار یا کوئری غیر بهینه باعث مصرف غیرعادی منابع شده باشه، ارتقای سرور ممکنه فقط به صورت موقت مشکل رو کمتر کنه.
بهتره ابتدا علت اصلی پیدا بشه.
Disk I/O چیست و چرا باعث کندی سرور میشود؟
در واقع Disk I/O مربوط به عملیات خواندن و نوشتن روی دیسک هست.
وقتی تعداد زیادی پردازش به صورت همزمان به فضای ذخیرهسازی دسترسی داشته باشن، ممکنه درخواستها در صف قرار بگیرن و سرعت سرور کاهش پیدا کنه.
آیا پر بودن فضای دیسک باعث کندی سرور میشود؟
بله. پر شدن فضای دیسک میتونه باعث اختلال در ایجاد فایلهای موقت، ثبت Logها و عملکرد سرویسهایی مثل دیتابیس و وبسرور بشه.
بهتره همیشه مقداری فضای خالی روی سرور باقی بمونه.
بهترین روش برای جلوگیری از کند شدن سرور چیست؟
مانیتورینگ مداوم منابع، بررسی Logها، بهینهسازی نرمافزارها و دیتابیس، کنترل فضای دیسک و شناسایی پردازشهای غیرعادی از بهترین روشها برای جلوگیری از کندی
سرور هستن.

دیدگاهتان را بنویسید