جلوگیری از پر شدن CPU سرور

خلاصه این مقاله:با استفاده از ابزارهای مختلف مانند top، htop، ps و iptables، می توان به راحتی فرآیندهای پرمصرف را شناسایی، مدیریت، و بهینه سازی کرد. تنظیمات حافظه SWAP، بهینه سازی وب سرورها و دیتابیس ها، و محدود کردن اتصال های ناشناخته از IP ها، همگی تکنیک هایی هستند که به کاهش مصرف CPU و جلوگیری از پر شدن آن کمک می کنند. این اقدامات به شما کمک خواهند کرد تا سرور خود را به طور بهینه مدیریت کرده و از عملکرد پایدار آن اطمینان حاصل کنید.

جلوگیری از پر شدن CPU سرور مجازی

مقدمه

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

پر شدن CPU
پر شدن CPU

تشخیص دلایل پر شدن CPU

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

  1. استفاده از دستور top

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

    top
    

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

  2. استفاده از htop

    ابزار htop نسخه پیشرفته تر و گرافیکی تر دستور top است که استفاده راحت تری دارد. این ابزار به شما این امکان را می دهد که فرآیندها را به طور گرافیکی مشاهده کرده و با استفاده از کلیدهای جهت دار فرآیندهای مختلف را مدیریت کنید. این ابزار به ویژه برای شناسایی منابع پرمصرف CPU بسیار مفید است.نصب و اجرای htop:

    sudo apt install htop
    htop
    
  3. دستور ps

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

    ps aux --sort=-%cpu | head -n 6
    

    این دستور به شما پنج فرآیند اول که بیشترین مصرف CPU را دارند، نشان می دهد.

متوقف کردن برنامه ها

پس از شناسایی فرآیندهای پرمصرف، ممکن است نیاز به توقف یا محدود کردن آن ها برای بهبود عملکرد سرور داشته باشیم. متوقف کردن فرآیندهای بی مورد یا پرمصرف می تواند بار سیستم را کاهش داده و عملکرد بهتری را برای سایر خدمات فراهم کند.

  1. یافتن شناسه فرآیند (PID)

    برای متوقف کردن یک فرآیند، ابتدا باید شناسه فرآیند (PID) آن را پیدا کنید. این کار با استفاده از دستور ps انجام می شود:

    ps aux | grep [نام فرآیند]
    
  2. متوقف کردن یک فرآیند

    بعد از شناسایی PID، برای متوقف کردن فرآیند، از دستور kill استفاده کنید:

    kill [PID]
    

    اگر فرآیند متوقف نشد، از گزینه -9 برای اتمام فوری فرآیند استفاده کنید:

    kill -9 [PID]
    
  3. کنترل اولویت فرآیندها

    یکی از روش های دیگر برای مدیریت فرآیندها، استفاده از ابزارهای nice و renice برای تنظیم اولویت اجرای فرآیندها است. این ابزارها به شما این امکان را می دهند که اولویت پردازشی یک فرآیند را کاهش دهید.

    • برای اجرای یک فرآیند با اولویت پایین تر از دستور nice استفاده کنید:
      nice -n 10 [دستور فرآیند]
      
    • برای تغییر اولویت یک فرآیند در حال اجرا از دستور renice استفاده کنید:
      renice -n 10 -p [PID]
      

بهینه سازی سرور مجازی

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

  1. استفاده از حافظه مجازی (SWAP)

    حافظه SWAP به عنوان یک حافظه موقت برای زمانی که RAM سرور پر می شود، عمل می کند. اگر سرور شما به حافظه زیادی نیاز دارد، استفاده از SWAP می تواند به جلوگیری از پر شدن CPU و کاهش بار آن کمک کند.برای ایجاد فایل SWAP:

    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  2. بهینه سازی وب سرورها (Nginx/Apache)

    • تنظیمات KeepAlive: فعال سازی این گزینه برای کاهش تعداد اتصالات به سرور مفید است.
    • کش کردن و فشرده سازی: فعال کردن کش و فشرده سازی برای وب سرورها به کاهش مصرف CPU کمک می کند. برای Nginx، می توانید از فشرده سازی gzip استفاده کنید:
      gzip on;
      
  3. بهینه سازی دیتابیس ها (MySQL/PostgreSQL)

    • ایندکس گذاری: در دیتابیس ها، ایندکس گذاری مناسب می تواند جستجوهای سریع تری را فراهم کند و به مصرف کمتر CPU منجر شود.
    • تنظیمات کش: استفاده از کش برای ذخیره سازی داده های موقت و کاهش درخواست های به پایگاه داده.

جلوگیری از DDoS با استفاده از iptables

حملات DDoS یکی از عوامل عمده پر شدن CPU در سرورها هستند. برای جلوگیری از این حملات، می توان از ابزار iptables استفاده کرد.

  1. محدود کردن تعداد اتصال ها از یک IP

    با استفاده از iptables، می توان تعداد اتصالات از یک IP خاص را محدود کرد:

    sudo iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 1/s -j ACCEPT
    sudo iptables -A INPUT -p tcp --syn --dport 80 -j DROP
    
  2. محدود کردن تعداد درخواست ها از یک IP

    برای جلوگیری از حملات بر اساس تعداد زیاد درخواست ها از یک IP:

    sudo iptables -A INPUT -p tcp --dport 80 -m recent --update --hitcount 100 --seconds 60 --name DEFAULT -j DROP
    

نتیجه گیری

با استفاده از ابزارهای مختلف مانند top، htop، ps و iptables، می توان به راحتی فرآیندهای پرمصرف را شناسایی، مدیریت، و بهینه سازی کرد. تنظیمات حافظه SWAP، بهینه سازی وب سرورها و دیتابیس ها، و محدود کردن اتصال های ناشناخته از IP ها، همگی تکنیک هایی هستند که به کاهش مصرف CPU و جلوگیری از پر شدن آن کمک می کنند. این اقدامات به شما کمک خواهند کرد تا سرور خود را به طور بهینه مدیریت کرده و از عملکرد پایدار آن اطمینان حاصل کنید.