سیستم عامل

یافتن اسکریپت‌های پرمصرف پردازنده و رم با فرمان htop در سرور لینوکس

  • 16 دقیقه برای خواندن
  • تیم Hostragons
یافتن اسکریپت‌های پرمصرف پردازنده و رم با فرمان htop در سرور لینوکس

فرمان htop در سرور لینوکس یکی از ابزارهای بسیار کاربردی برای رصد زنده اسکریپت‌هایی است که بیش از حد پردازنده (CPU) و حافظه رم (RAM) را مصرف می‌کنند. با بررسی ستون‌های CPU٪، MEM٪، PID، USER، TIME+ و COMMAND در محیط htop می‌توانید متوجه شوید کدام فرآیندهای PHP، Python، Node.js، کرون (cron)، دیتابیس یا سیستم عامل فشار روی سرور ایجاد می‌کنند. سپس با شناسایی مالک فرآیند، مسیر فایل و هدف اجرای آن، می‌توانید به شکل امن و اصولی مداخله کنید.

فرقی نمی‌کند شما در محیط هاست اشتراکی، VPS، VDS یا سرور اختصاصی فعالیت می‌کنید، اکثر کندی‌های ناگهانی ناشی از اسکریپت‌های کنترل‌نشده است. مثلاً یک افزونه خراب وردپرس، اسکریپتی که در حلقه بی‌نهایت گیر کرده، کرون جاب پرکار، کوئری‌های دیتابیس بهینه نشده یا فایل‌های وب آلوده می‌توانند در عرض چند دقیقه مصرف CPU را تا ۱۰۰٪ بالا ببرند. افزایش مصرف رم هم باعث اختلال در سرویس‌ها، قطع اتصال MySQL، نمایش خطای ۵۰۳ در وب‌سایت‌ها یا فعال شدن مکانیزم OOM Killer هسته لینوکس برای خاتمه دادن به برخی فرآیندها می‌شود.

در این راهنما از نصب و راه‌اندازی htop شروع کرده و شیوه خواندن صفحه، تشخیص اسکریپت‌های پرمصرف CPU و RAM، پیدا کردن مسیر فایل از طریق PID و نحوه مداخله امن را گام‌به‌گام توضیح می‌دهیم. همچنین نکاتی درباره بررسی امنیت، مدیریت کرون، تحلیل لاگ‌ها و پیشنهادهای بهینه‌سازی برای جلوگیری از تکرار مشکل ارائه خواهیم داد. اگر در سرور خود مکرراً با محدودیت منابع مواجهید، می‌توانید برای انتخاب مناسب زیرساخت به بسته‌های سرور VPS و هاستینگ وب با عملکرد بالا مراجعه کنید.

htop چیست و چرا از دستور top بهتر است؟

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

با htop می‌توانید به صورت لحظه‌ای موارد زیر را ببینید:

  • درصد استفاده هر فرآیند از CPU
  • درصد و میزان مصرف RAM هر فرآیند
  • شماره شناسایی فرآیند (PID)
  • کاربری که فرآیند را اجرا کرده
  • نام دستور یا اسکریپت اجرا شده
  • مدت زمان اجرا و اولویت فرآیند
  • مقادیر load average، کل RAM، swap و استفاده از هسته‌های CPU

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

نصب htop: دستورات بر اساس توزیع لینوکس

در بسیاری توزیع‌های لینوکس مدرن، htop به صورت پیش‌فرض نصب نیست. اگر دسترسی root یا sudo دارید، می‌توانید در چند ثانیه آن را نصب کنید. قبل از نصب بهتر است فهرست بسته‌ها را به‌روزرسانی کنید تا خطاهای احتمالی به حداقل برسد.

نصب htop در اوبونتو و دبیان

در سرورهای مبتنی بر اوبونتو یا دبیان، از دستورات زیر استفاده کنید:

sudo apt update

sudo apt install htop -y

پس از نصب، با وارد کردن دستور htop می‌توانید برنامه را اجرا کنید. اگر دسترسی sudo ندارید، از ارائه‌دهنده هاست درخواست پشتیبانی کنید. در VPS های مدیریتی معمولاً دسترسی root در اختیار شماست.

نصب در AlmaLinux، Rocky Linux، CentOS و RHEL

در سیستم‌های مبتنی بر RHEL ممکن است مدیر بسته dnf یا yum باشد:

sudo dnf install htop -y

در نسخه‌های قدیمی‌تر CentOS ممکن است نیاز به فعال‌سازی مخزن EPEL باشد:

sudo yum install epel-release -y

sudo yum install htop -y

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

چگونه صفحه htop را بخوانیم؟ معنی ستون‌ها چیست؟

پس از اجرای htop، در بالای صفحه اطلاعاتی مانند هسته‌های CPU، رم، swap، تعداد تسک‌ها، تردها، load average و زمان کارکرد سیستم دیده می‌شود. در پایین، لیست فرآیندها نمایش داده می‌شود. مهم‌ترین ستون‌ها برای عیب‌یابی عبارتند از:

چگونه صفحه htop را بخوانیم؟ معنی ستون‌ها چیست؟
ستون معنی چه زمانی باید مشکوک شد؟
PID شماره شناسایی یکتا برای هر فرآیند برای بررسی مسیر فایل و ارتباطات ضروری است.
USER کاربری که فرآیند را اجرا کرده اگر فرآیندی با کاربر غیرمنتظره اجرا شود باید بررسی شود.
CPU% درصد استفاده لحظه‌ای از پردازنده فرآیندهایی که مدتی طولانی ۸۰ تا ۱۰۰ درصد مصرف دارند باید بررسی شوند.
MEM% درصد مصرف رم نسبت به کل حافظه اگر یک اسکریپت بیش از ۲۰ درصد رم مصرف کند، هشدار است.
TIME+ کل زمان صرف شده توسط فرآیند روی CPU نمایشگر فرآیندهایی است که مدت زیادی منابع می‌گیرند.
COMMAND دستور یا نام اسکریپت در حال اجرا در فرآیندهای php، python، node، bash و غیره مسیر فایل باید بررسی شود.

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

یافتن اسکریپت‌های پرمصرف CPU با htop

برای پیدا کردن فرآیندهای پردازنده‌خوار، در صفحه htop کلید F6 را بفشارید تا معیار مرتب‌سازی را انتخاب کنید یا روی ستون CPU% کلیک کنید (در ترمینال‌هایی که پشتیبانی موس دارند). فرآیندهای بالای لیست بیشترین مصرف CPU را دارند.

مرحله ۱: مرتب‌سازی بر اساس CPU%

در حال اجرای htop، فرآیندها را بر اساس میزان مصرف CPU مرتب کنید. اگر php-fpm، php، python3، node، java، mysqld یا bash مدام در رتبه‌های بالا هستند، آنها را یادداشت کنید. در سیستم‌های تک‌هسته‌ای مصرف ۱۰۰٪ طبیعی است، ولی در سیستم‌های چند هسته‌ای ممکن است درصدها به ۲۰۰ یا ۴۰۰ هم برسند که نشان‌دهنده استفاده از چند هسته است.

مرحله ۲: یادداشت PID و USER

شماره PID و نام کاربری فرآیند مشکوک را ثبت کنید. مثلاً اگر PID برابر ۲۴۸۱۹، USER برابر siteuser و COMMAND چیزی مثل php /home/siteuser/public_html/wp-cron.php است، ممکن است مشکل مربوط به کرون یا مکانیزم وردپرس آن سایت باشد. اگر COMMAND کوتاه است، می‌توانید تنظیمات htop را تغییر دهید تا خط دستور کامل نشان داده شود یا با دستور ps جزئیات بیشتری بگیرید.

مرحله ۳: مشاهده دستور دقیق فرآیند

برای دیدن دقیق‌تر دستور اجرا شده از PID، دستور زیر را اجرا کنید:

ps -fp PID

مثال:

ps -fp 24819

این خروجی معمولاً مسیر فایل اسکریپت را نشان می‌دهد. اگر دستور چیزی مانند php /home/user/public_html/index.php بود، احتمالا یک درخواست وب است. اما اگر مسیر به افزونه‌ای ناشناس در wp-content/plugins اشاره کرد، مشکل از یک افزونه است.

مرحله ۴: بررسی مسیر فایل و فایل‌های باز

ابزار lsof برای دیدن فایل‌هایی که فرآیند باز نگه داشته بسیار مفید است:

lsof -p PID

این دستور فایل‌ها، کتابخانه‌ها، لاگ‌ها و اتصالات شبکه مربوط به فرآیند را نشان می‌دهد. در محیط میزبانی وب، از این طریق می‌توان تشخیص داد کدام دایرکتوری سایت فعال است. اگر در مسیرهایی مانند /home/example/public_html/wp-content/uploads فایل PHP با نام عجیب دیدید، احتمال نفوذ وجود دارد. در این حالت فقط متوقف کردن فرآیند کافی نیست؛ باید پاکسازی فایل‌ها، تغییر رمزعبور، به‌روزرسانی افزونه‌ها و اسکن امنیتی انجام شود. برای تنظیمات SSL و امنیت می‌توانید به راه‌حل‌های گواهی‌نامه SSL مراجعه کنید.

یافتن اسکریپت‌های پرمصرف RAM با htop

مشکلات رم معمولاً کمتر محسوس و مخفیانه‌تر هستند. وقتی CPU بالا می‌رود، معمولا کندی آنی دیده می‌شود؛ اما وقتی رم تمام می‌شود، سرویس‌ها ناگهان قطع می‌شوند، swap به شدت استفاده می‌شود و تأخیر کلی سیستم زیاد می‌شود. در htop با مرتب‌سازی بر اساس MEM% می‌توانید فرآیندهای پرمصرف رم را شناسایی کنید.

درک رابطه MEM%، RES و Swap

نمای پیش‌فرض htop مقدار MEM% را نمایش می‌دهد. برخی تنظیمات ستون‌های VIRT، RES و SHR هم دارند. برای تحلیل رم، مقدار RES اهمیت بیشتری دارد چون نشان‌دهنده مصرف واقعی حافظه فیزیکی است. مقدار VIRT صرفا حافظه مجازی رزرو شده است و همیشه واقعی نیست.

مثلاً در یک VPS با رم ۴ گیگابایت، مصرف ۹۰۰ مگابایت رم توسط یک فرآیند PHP غیرعادی است. یا اگر یک برنامه Node.js از ۲۰۰ مگابایت به ۱.۵ گیگابایت افزایش مصرف داشت، احتمالا نشانه نشتی حافظه است. مصرف بالای رم در MySQL یا MariaDB گاهی طبیعی است و مربوط به کش‌های دیتابیس است؛ اما باید پارامترهای کوئری و حافظه سیستم را هم بررسی کرد.

دلایل معمول مصرف بالای RAM در اسکریپت‌ها

  • کدهای PHP، Python یا Node.js که در حلقه بی‌نهایت گیر می‌کنند
  • بارگذاری فایل‌های بزرگ CSV، XML یا JSON در حافظه به صورت یکجا
  • افزونه‌ها و توابع قالب وردپرس بهینه نشده
  • پردازش تصاویر، تولید PDF یا تبدیل ویدئو
  • عدم استفاده مناسب از کش و اجرای مکرر کوئری‌های سنگین
  • ترافیک بات یا حملات باعث اجرای چندباره یک اسکریپت
  • نشتی حافظه در سرویس‌های پس‌زمینه با مدت زمان طولانی

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

جستجو، فیلتر و نمایش درختی در htop

وقتی صدها فرآیند روی سرور فعال است، پیدا کردن دستی سخت می‌شود. htop کلیدهای میانبر مناسبی دارد: با F3 جستجو، F4 فیلتر و F5 نمایش درختی فعال می‌شود. نمایش درختی برای دیدن روابط والد و فرزند فرآیندها مفید است. مثلاً می‌توانید ببینید php-fpm های زیر nginx یا apache چگونه اجرا شده‌اند، کرون جاب‌ها چه اسکریپت‌هایی را فراخوانی می‌کنند یا سرویس‌های Node.js توسط supervisor مدیریت می‌شوند.

نمونه‌های کاربردی فیلتر

  • نوشتن php فقط فرآیندهای PHP را نمایش می‌دهد.
  • نوشتن python اسکریپت‌های Python را جدا می‌کند.
  • wp-cron برای بررسی رفتار کرون وردپرس کاربرد دارد.
  • node برای مشاهده برنامه‌های Node.js مفید است.
  • فیلتر بر اساس نام کاربر، فرآیندهای یک حساب میزبانی خاص را نشان می‌دهد.

این فیلترها به خصوص در سرورهای چندکاربره بسیار زمان‌بر هستند. مثلاً وقتی ۳۰ سایت روی یک سرور است، با بررسی USER و مسیر فایل می‌توان سریع تشخیص داد مشکل مربوط به کدام اکانت است. برای مدیریت دامنه‌ها و ساده‌سازی کارها می‌توانید به بررسی دامنه و ثبت مراجعه کنید.

برنامه مداخله امن برای PID مشکوک

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

۱. مستندسازی فرآیند

ابتدا PID، USER، COMMAND، CPU%، MEM% و زمان اجرا را یادداشت کنید. در صورت امکان اسکرین‌شات بگیرید. این اطلاعات برای مقایسه در مشکلات تکراری و ارائه گزارش به مشتریان بسیار مفید است.

۲. اطمینان از مسیر فایل فرآیند

با دستورات ps -fp PID و lsof -p PID مسیر فایل را چک کنید. اگر فایل در دایرکتوری اصلی وب است، لاگ‌های مربوط به برنامه را بررسی کنید. برای وردپرس، wp-content/debug.log، لاگ‌های سرور وب و slow log های PHP-FPM سرنخ‌های مهمی دارند.

۳. ابتدا خاتمه ملایم را امتحان کنید

اگر فرآیند واقعا خارج از کنترل است، ابتدا از دستور زیر استفاده کنید:

kill PID

چند ثانیه صبر کنید و ببینید در htop فرآیند بسته شده یا نه. اگر بسته نشد و سیستم را به شدت مختل می‌کند، به عنوان آخرین راه از:

kill -9 PID

استفاده کنید. دقت کنید kill -9 به فرآیند فرصت پاکسازی نمی‌دهد و ممکن است مشکلاتی ایجاد کند.

۴. اگر فرآیند دوباره راه‌اندازی شد، علت را بیابید

اگر فرآیند پس از خاتمه سریع برگشت، ممکن است توسط کرون، سرویس systemd، supervisor، درخواست وب یا ترافیک بات‌ها راه‌اندازی مجدد شود. برای بررسی کرون از crontab -l، برای سرویس‌ها از systemctl status و برای ترافیک وب از لاگ‌های دسترسی استفاده کنید. اگر مشکل از wp-cron وردپرس است، تنظیمات cron واقعی و سیاست کش باید اصلاح شود.

ترکیب نتایج htop با لاگ‌ها برای تشخیص بهتر

ترکیب نتایج htop با لاگ‌ها برای تشخیص بهتر

htop نشان می‌دهد چه چیزی منابع مصرف می‌کند؛ لاگ‌ها می‌گویند چرا. بدون ترکیب این دو، تشخیص ناقص می‌ماند. مثلاً یک فرآیند php-fpm ممکن است ۱۸۰٪ CPU مصرف کند؛ اما بدون لاگ دسترسی نمی‌دانید کدام URL یا بات این فرآیند را فعال کرده است.

لاگ‌های قابل بررسی عبارتند از:

  • لاگ دسترسی وب‌سرور: نمایش URL های پرترافیک
  • لاگ خطا وب‌سرور: خطاهای PHP، مجوز فایل‌ها و خطاهای ۵۰۰
  • slow log های PHP-FPM: شناسایی کدهای کند
  • slow query log دیتابیس: کوئری‌های سنگین SQL
  • لاگ‌های احراز هویت: تلاش‌های مشکوک ورود
  • لاگ کرون: زمان اجرای جاب‌ها

مثلاً اگر PID با مصرف CPU بالا در همان زمان هزاران درخواست به /wp-admin/admin-ajax.php دریافت کند، احتمال مشکل از افزونه، بات یا اجرای نامناسب AJAX است. در این حالت باید WAF، محدودیت نرخ درخواست، کش و بهینه‌سازی افزونه‌ها همزمان اجرا شوند. برای بهبود کلی سرعت وب‌سایت به بهینه‌سازی سرعت وب‌سایت مراجعه کنید.

تشخیص بار نرمال از بار مشکل‌ساز

هر مصرف بالای منابع به معنی بحران نیست. سخت‌افزار سرور، میزان ترافیک، نوع اپلیکیشن و عملیات نگهداری باید لحاظ شود. برای یک VPS دو هسته‌ای، load average بین ۶ تا ۸ برای مدتی طولانی نشانگر گلوگاه جدی است. اما برای سرور اختصاصی ۱۶ هسته‌ای این مقدار طبیعی است. پس در تحلیل load average حتما تعداد هسته‌ها را در نظر بگیرید.

تشخیص بار نرمال از بار مشکل‌ساز
مشاهده وضعیت ممکن اقدام پیشنهادی
CPU برای مدت کوتاهی به ۱۰۰٪ می‌رسد سپس به حالت عادی بازمی‌گردد بار موقت و طبیعی با لاگ‌ها تطبیق دهید، سریع مداخله نکنید.
یک PID دقایق طولانی CPU بالا مصرف می‌کند حلقه بی‌نهایت یا پردازش سنگین مسیر PID را پیدا و اسکریپت را بررسی کنید.
مصرف RAM به طور پیوسته افزایش و کاهش ندارد نشتی حافظه کد سرویس و تنظیمات workers را بازبینی کنید.
میزان استفاده از Swap سریع بالا می‌رود رم فیزیکی ناکافی بهینه‌سازی رم یا ارتقا پلن را برنامه‌ریزی کنید.
تعداد زیادی فرآیند PHP مشابه وجود دارد ترافیک بات یا درخواست‌های سنگین لاگ‌ها، فایروال و کش را بررسی کنید.

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

شک به امنیت: آیا اسکریپت پرمصرف ممکن است مخرب باشد؟

اسکریپتی که CPU یا RAM را می‌خورد لزوماً خطا نیست. سایت‌های هک شده ممکن است توسط مهاجمان برای ارسال اسپم، استخراج رمزارز، پروکسی، بات حمله یا درهای پشتی استفاده شوند. در صفحه htop اگر فرآیندی با کاربر غیرمعمول، نام‌های تصادفی فایل، فایل‌های اجرایی در /tmp یا /public_html/uploads مشاهده کردید، باید جدی گرفته شود.

نشانه‌های مشکوک

  • نام‌های بی‌معنی یا کاراکترهای تصادفی در COMMAND
  • فایل‌های اجرایی در دایرکتوری‌های موقت مانند /tmp یا uploads
  • فرآیندهای perl، python یا bash که نباید در محیط وب باشند
  • مصرف بالای ترافیک شبکه توسط فرآیندها
  • اجرای سریع و مکرر تعداد زیادی فرآیند توسط یک کاربر
  • تغییرات غیرمجاز و جدید در فایل‌های وب

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

بهترین روش‌ها برای جلوگیری از تکرار مشکلات عملکردی

یافتن مشکل با htop مهم است؛ ولی هدف اصلی جلوگیری از بروز مجدد آن است. اقدامات زیر مصرف CPU و RAM را در سرورهای لینوکسی به طور چشمگیری کاهش می‌دهد:

  • تنظیم مقادیر PHP مانند memory_limit، max_execution_time و pm.max_children متناسب با ظرفیت سرور
  • استفاده از سیستم کش در وردپرس، جوملا یا نرم‌افزارهای اختصاصی
  • حذف افزونه‌ها، قالب‌ها و ماژول‌های غیرضروری
  • بهینه‌سازی کوئری‌های سنگین با slow query log دیتابیس
  • عدم اجرای همزمان کرون جاب‌ها و زمان‌بندی مناسب آنها
  • اعمال محدودیت نرخ درخواست، robots.txt و قوانین فایروال برای مقابله با ترافیک بات
  • گردش منظم لاگ‌ها و کنترل تاثیر فایل‌های بزرگ روی دیسک و رم
  • ردیابی منظم متریک‌های سرور نه فقط در مواقع بحران

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

سناریوی نمونه: انفجار مصرف CPU در سایت وردپرس

فرض کنید روی VPS با ۴ هسته و ۸ گیگ رم چند سایت وردپرس دارید. کاربران از کندی و خطای ۵۰۲ گزارش می‌دهند. با اجرای htop می‌بینید load average روی ۱۲ است، تمام هسته‌ها مشغول و چندین فرآیند php-fpm متعلق به یک کاربر در صدر هستند.

با فیلتر کردن بر اساس نام کاربر، PID یک فرآیند پرمصرف را یادداشت می‌کنید. خروجی ps -fp PID نشان worker های php-fpm است و lsof -p PID مسیر /home/site/public_html/wp-content/plugins/example-importer/import.php را نشان می‌دهد. لاگ دسترسی بررسی می‌شود و مشخص می‌گردد درخواست‌های مدیر و فراخوانی‌های AJAX تکراری این فایل را فعال کرده‌اند.

برای حل مشکل، عملیات ایمپورت متوقف، جاب زمان‌بندی شده افزونه غیرفعال و واردکردن داده بزرگ به بخش‌های کوچک تقسیم می‌شود. زمان اجرای PHP (max_execution_time) نیز مجدداً تنظیم می‌شود. به جای wp-cron از کرون سیستم استفاده می‌شود. نتیجه این است که load average از ۱۲ به ۱.۸ کاهش می‌یابد، مصرف CPU به حالت عادی برمی‌گردد و زمان پاسخ‌دهی سایت بهبود قابل توجهی می‌یابد. این مثال نشان می‌دهد htop به تنهایی کافی نیست و ترکیب آن با ps، lsof و تحلیل لاگ چقدر موثر است.

اشتباهات رایج هنگام استفاده از htop

  • بستن تنها فرآیند بالاترین مصرف‌کننده بدون پیگیری علت
  • تفسیر اشتباه مقدار VIRT به عنوان مصرف واقعی رم
  • تصور اینکه مصرف رم MySQL به صورت کش مشکل است
  • استفاده پیش‌فرض و فوری از kill -9
  • اتهام زدن به برنامه یا کاربر بدون بررسی لاگ‌ها
  • تفسیر load average بدون توجه به تعداد هسته‌ها
  • نادیده گرفتن بررسی سلامت فایل‌ها در صورت شک به نفوذ

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

سؤالات متداول

فرمان htop در سرور لینوکس چه کاربردی دارد؟

htop فرآیندهای در حال اجرا را به صورت زنده با جزئیاتی مانند مصرف CPU، رم، کاربر، PID و دستور اجرا شده نمایش می‌دهد تا بتوانید اسکریپت‌های پرمصرف را سریع شناسایی کنید.

چطور با htop اسکریپت‌های پرمصرف CPU را پیدا کنم؟

در محیط htop فرآیندها را بر اساس ستون CPU٪ مرتب کنید، PID و USER فرآیندهای بالا را یادداشت کنید و با دستورات ps -fp PID و lsof -p PID مسیر فایل و جزئیات را بررسی کنید.

در تحلیل مصرف رم، بیشتر به MEM٪ توجه کنیم یا VIRT؟

MEM٪ و خصوصاً مقدار RES که مصرف واقعی حافظه فیزیکی را نشان می‌دهد، معیارهای بهتری هستند. VIRT مقدار حافظه مجازی رزرو شده است و همیشه نشان‌دهنده مصرف واقعی رم نیست.

آیا بلافاصله باید فرآیند پرمصرف را با kill -9 بستم؟

خیر؛ بهتر است ابتدا فرآیند را مستندسازی، مسیر فایل را چک و با دستور kill PID به آرامی خاتمه دهید. kill -9 فقط وقتی استفاده شود که فرآیند بسته نمی‌شود و سلامت سیستم به خطر افتاده باشد.

آیا مصرف بالای CPU در htop همیشه نشانه حمله است؟

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

خلاصه اینکه، فرمان htop در لینوکس نقطه شروع سریع، کاربردی و مؤثری برای پیدا کردن اسکریپت‌های پرمصرف پردازنده و رم است. بهترین نتیجه وقتی حاصل می‌شود که داده‌های htop با تحلیل PID، خروجی lsof، بررسی کرون و لاگ‌ها ترکیب شود. در صورت تکرار مشکلات منابع بهتر است هم بهینه‌سازی نرم‌افزار و هم ظرفیت زیرساخت را همزمان بررسی کنید. در این مسیر می‌توانید با مقایسه خدمات هاستینگ، VPS و SSL در Hostragons، بهترین گزینه را بدون فشار فروش انتخاب نمایید.

این مقاله را به اشتراک بگذارید:

تیم Hostragons

راهنماهای به‌روز از تیم متخصص ما در زمینه هاستینگ، سرورها و نام‌های دامنه. بیایید با هم راه‌حل مناسب برای پروژه شما را پیدا کنیم.

تماس با ما