راهنمای کامل پایش منابع سرور با top، htop، df و iostat

با ابزارهای top، htop، df و iostat مصرف CPU، RAM و دیسک سرور را دقیق پایش کنید. تفسیر اعداد، اشتباهات رایج و دستورات عملی را در این راهنما بیاموزید.

۷ دقیقه به‌روزرسانی ۳۰ مرداد ۱۴۰۵

چرا پایش منابع سرور حیاتی است؟

هر سروری، چه یک VPS کوچک و چه یک دیتاسنتر بزرگ، منابع محدودی دارد. وقتی مصرف CPU، RAM یا دیسک از حد معینی عبور کند، عملکرد برنامه‌ها افت می‌کند، پاسخ‌دهی وب‌سایت کند می‌شود و در بدترین حالت، سرور از دسترس خارج می‌شود. پایش منابع سرور به شما کمک می‌کند قبل از اینکه کاربران متوجه مشکل شوند، آن را شناسایی و رفع کنید. در این مقاله، چهار ابزار اصلی لینوکس یعنی top، htop، df و iostat را بررسی می‌کنیم و یاد می‌گیریم که اعداد خروجی آن‌ها را چگونه تفسیر کنیم.

ابزار top: نمای کلی و لحظه‌ای مصرف منابع

دستور top قدیمی‌ترین و در دسترس‌ترین ابزار پایش منابع سرور است. این ابزار به‌صورت پیش‌فرض روی تقریباً تمام توزیع‌های لینوکس نصب است و نمای زنده‌ای از مصرف CPU، RAM و فرآیندهای در حال اجرا ارائه می‌دهد.

خواندن خروجی top

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

خط دوم و سوم به ترتیب وضعیت فرآیندها و مصرف CPU را نشان می‌دهند. در خط CPU، مقادیر زیر را می‌بینید:

  • us: درصد استفاده CPU توسط فرآیندهای کاربر (User)
  • sy: درصد استفاده CPU توسط هسته سیستم (System)
  • id: درصد بیکاری CPU (Idle)
  • wa: درصد انتظار برای I/O دیسک (I/O Wait)

اگر مقدار wa بالا باشد (مثلاً بالای ۲۰٪)، یعنی دیسک سرور کند است و CPU منتظر عملیات ورودی/خروجی می‌ماند. این یکی از مهم‌ترین نشانه‌هایی است که در پایش منابع سرور باید به آن توجه کنید.

دستورات کاربردی در top

هنگامی که top در حال اجراست، می‌توانید از کلیدهای زیر استفاده کنید:

  • P: مرتب‌سازی بر اساس مصرف CPU
  • M: مرتب‌سازی بر اساس مصرف RAM
  • k: کشتن یک فرآیند با وارد کردن PID
  • q: خروج از برنامه

برای خروجی یک‌باره و غیرتعاملی، از دستور زیر استفاده کنید:

top -b -n 1 | head -n 20

این دستور یک نمونه از خروجی را بدون حالت تعاملی چاپ می‌کند و برای اسکریپت‌های خودکار بسیار مفید است.

اشتباه رایج: بسیاری از کاربران فقط به درصد CPU نگاه می‌کنند و مقدار wa را نادیده می‌گیرند. اگر wa بالا باشد اما CPU بیکار به نظر برسد، مشکل از پردازنده نیست؛ بلکه دیسک یا شبکه است.

ابزار htop: پایش منابع سرور با رابط کاربری بهتر

htop نسخه بهبودیافته top است که رابط کاربری رنگی، نوارهای پیشرفت بصری و امکان پیمایش با ماوس را فراهم می‌کند. اگرچه به‌صورت پیش‌فرض روی همه سیستم‌ها نصب نیست، اما نصب آن ساده است:

# Debian/Ubuntu
sudo apt install htop

# RHEL/CentOS
sudo yum install htop

مزایای htop نسبت به top

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

همچنین در پایین صفحه، نوار حافظه (RAM) و حافظه Swap را می‌بینید. نکته مهم این است که در لینوکس، حافظه‌ای که توسط برنامه‌ها استفاده نشده، به‌عنوان cache برای دیسک استفاده می‌شود. بنابراین اگر مقدار used بالا باشد اما cache هم زیاد باشد، جای نگرانی نیست؛ سیستم از حافظه بهینه استفاده می‌کند.

کار با درخت فرآیندها

یکی از قابلیت‌های مفید htop نمایش درختی فرآیندهاست. با فشردن کلید F5 می‌توانید ببینید کدام فرآیند والد، فرزندان خود را اجرا کرده است. این ویژگی برای پیدا کردن ریشه مشکلات مصرف منابع بسیار کاربردی است. به‌عنوان مثال، اگر یک وب‌سرور Apache صدها فرآیند فرزند ایجاد کرده باشد، در نمای درختی به‌وضوح مشخص می‌شود که همه آن‌ها از یک فرآیند اصلی نشأت گرفته‌اند.

ابزار df: پایش فضای دیسک

فضای دیسک یکی از منابعی است که معمولاً دیر متوجه کمبود آن می‌شویم. دستور df (Disk Free) اطلاعات مربوط به فضای استفاده‌شده و موجود هر پارتیشن را نشان می‌دهد.

دستورات اصلی df

ساده‌ترین شکل استفاده از df به این صورت است:

df -h

گزینه -h (human-readable) اندازه‌ها را به‌صورت قابل‌فهم (GB، MB) نمایش می‌دهد. خروجی شامل ستون‌های زیر است:

  • Filesystem: نام پارتیشن یا دستگاه
  • Size: اندازه کل پارتیشن
  • Used: فضای استفاده‌شده
  • Avail: فضای موجود
  • Use%: درصد استفاده
  • Mounted on: نقطه اتصال (مانند / یا /home)

برای پایش منابع سرور به‌صورت دوره‌ای، می‌توانید از cron استفاده کنید و اگر درصد استفاده از حدی (مثلاً ۸۵٪) بیشتر شد، ایمیل هشدار ارسال کنید:

df -h | awk 'NR>1 {gsub(/%/,"",$5); if ($5 > 85) print $0}'

شناسایی فایل‌های حجیم

وقتی دیسک پر می‌شود، باید بدانید چه چیزی فضا را اشغال کرده است. دستور du (Disk Usage) در اینجا کمک می‌کند:

sudo du -sh /var/log/*
sudo du -h --max-depth=1 /home | sort -hr | head -n 10

دستور اول اندازه هر فایل در پوشه /var/log را نشان می‌دهد و دستور دوم بزرگ‌ترین پوشه‌های داخل /home را مرتب می‌کند. فایل‌های لاگ معمولاً بزرگ‌ترین عامل پر شدن دیسک هستند، بنابراین بررسی منظم آن‌ها بخش مهمی از پایش منابع سرور است.

اشتباه رایج: فایل‌های حذف‌شده اما همچنان باز (open) توسط فرآیندها، فضای دیسک را اشغال می‌کنند. اگر df فضای کم نشان می‌دهد اما du فایل بزرگی پیدا نمی‌کند، این مشکل را بررسی کنید:

lsof +L1 | head -n 20

این دستور فایل‌های حذف‌شده‌ای را نشان می‌دهد که هنوز توسط فرآیندها در حال استفاده هستند.

ابزار iostat: تحلیل عمیق عملکرد دیسک

iostat بخشی از بسته sysstat است و اطلاعات دقیقی درباره عملکرد I/O دیسک ارائه می‌دهد. این ابزار برای پایش منابع سرور در شرایطی که دیسک کند است یا مشکوک به bottleneck هستید، ضروری است.

نصب و استفاده اولیه

# Debian/Ubuntu
sudo apt install sysstat

# RHEL/CentOS
sudo yum install sysstat

ساده‌ترین استفاده:

iostat -x 2 3

این دستور هر ۲ ثانیه یک بار، مجموعاً ۳ بار، خروجی را با گزینه -x (Extended) نمایش می‌دهد. ستون‌های مهم در خروجی عبارتند از:

  • %util: درصد زمانی که دیسک مشغول انجام عملیات بوده است. اگر این مقدار نزدیک ۱۰۰٪ باشد، دیسک به‌طور کامل اشباع شده است.
  • await: میانگین زمان پاسخ‌دهی دیسک به درخواست‌ها (میلی‌ثانیه). مقادیر بالای ۲۰ میلی‌ثانیه برای دیسک‌های HDD و بالای ۵ میلی‌ثانیه برای SSD نشانه مشکل است.
  • r/s و w/s: تعداد عملیات خواندن و نوشتن در هر ثانیه.
  • rkB/s و wkB/s: حجم داده خوانده‌شده و نوشته‌شده در هر ثانیه.

تفسیر اعداد iostat

فرض کنید خروجی زیر را می‌بینید:

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s await %util
sda       0.00   12.00 0.00 45.00 0.00 560.00 18.50 85.00

این خروجی نشان می‌دهد دیسک sda در ۸۵٪ مواقع مشغول است و میانگین زمان انتظار ۱۸.۵ میلی‌ثانیه است. این مقادیر برای یک HDD معمولی در مرز هشدار قرار دارند. اگر %util به ۱۰۰٪ برسد، یعنی دیسک دیگر توان پاسخگویی به درخواست‌های بیشتر را ندارد و باید به‌فکر ارتقای سخت‌افزار یا بهینه‌سازی برنامه‌ها باشید.

پایش مداوم با sar

بسته sysstat شامل ابزار sar نیز هست که می‌تواند داده‌های تاریخی را جمع‌آوری کند. برای فعال‌سازی جمع‌آوری خودکار داده‌ها:

sudo systemctl enable sysstat
sudo systemctl start sysstat

سپس می‌توانید گزارش دیروز را ببینید:

sar -d -f /var/log/sysstat/sa$(date +%d -d yesterday)

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

جمع‌بندی: یک استراتژی کامل برای پایش منابع سرور

هیچ ابزاری به‌تنهایی پاسخگوی همه نیازهای پایش منابع سرور نیست. بهترین رویکرد، ترکیب هوشمندانه این چهار ابزار است:

  1. از htop برای مشاهده سریع وضعیت لحظه‌ای CPU و RAM استفاده کنید.
  2. از top در اسکریپت‌های خودکار و زمانی که به ابزار سبک‌تری نیاز دارید بهره ببرید.
  3. با df به‌صورت روزانه فضای دیسک را چک کنید و هشدار خودکار تنظیم کنید.
  4. از iostat برای تحلیل عمیق عملکرد دیسک و شناسایی bottleneck استفاده کنید.

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

آیا این مطلب برایتان مفید بود؟