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

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

ابزار vmstat

معرفی

vmstat (Virtual Memory Statistics) ابزاری است که اطلاعاتی جامع در مورد پردازش‌ها، حافظه، سیستم، I/O، و CPU ارائه می‌دهد. این ابزار برای تحلیل وضعیت کلی سیستم و شناسایی نقاط ضعف در منابع سیستم استفاده می‌شود.

دستورها و پارامترها

vmstat 1 5: نمایش اطلاعات سیستم هر ثانیه برای پنج بار

[root@vahiddb ~]# vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 2  0  15752 2806576   8948 11052212    0    1  1189  3807 1481 1350 21  6 72  1  0

 3  0  15752 2805460   8948 11052212    0    0     0     0 5937 4693 25  5 70  0  0

 1  1  15752 2805472   8948 11052212    0    0   128    16 5860 4573 22  6 72  0  0

 3  0  15752 2805844   8948 11052212    0    0     0     4 5313 4347 22  5 73  0  0

 8  0  15752 2805060   8948 11052212    0    0     0     0 5162 4351 22  5 74  0  0

تحلیل خروجی

  • ستون r: تعداد پردازش‌هایی که منتظر اجرا هستند. مقادیر بالا ممکن است نشان‌دهنده فشار زیاد روی CPU باشد.
  • ستون si و so: تعداد بلاک‌های سوآپ شده. مقادیر بالا نشان‌دهنده کمبود حافظه فیزیکی است.
  • ستون wa: زمان انتظار CPU برای عملیات I/O. مقادیر بالا ممکن است نشان‌دهنده مشکلات I/O باشد.

 

دو نمونه دیگر از این دستور:

  • vmstat -s: نمایش خلاصه‌ای از آمارهای جمع‌آوری شده.
  • vmstat -d: نمایش آمار دستگاه‌های ذخیره‌سازی.

کاربرد پیشرفته

در محیط‌های پایگاه داده، vmstat می‌تواند برای شناسایی مشکلاتی مانند کمبود حافظه و فشار زیاد روی دیسک‌ها مفید باشد. برای مثال، در صورت مشاهده مقادیر بالا در ستون‌های si و wa، می‌توان بررسی عمیق‌تری از مصرف حافظه و عملکرد I/O انجام داد.

 

ابزار iostat

معرفی

iostat ابزاری است که برای مانیتورینگ سیستم‌های ذخیره‌سازی و عملکرد CPU استفاده می‌شود. این ابزار اطلاعاتی در مورد میزان استفاده از CPU و فعالیت دستگاه‌های I/O ارائه می‌دهد.

دستورها و پارامترها

  • iostat -x 1 5: نمایش آمار تفصیلی هر ثانیه برای پنج بار.

[root@vahiddb ~]# iostat -x 1 5

Linux 5.15.0-206.153.7.1.el8uek.x86_64 (vahiddb)        07/28/2024      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

          21.53    0.00    5.81 .60    0.00   72.06

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

scd0             0.01    0.00      0.26      0.00     0.00     0.00   0.00   0.00    1.28    0.00   0.00    31.07     0.00   1.63   0.00

sda             24.52   28.91   3208.71  10631.58     0.61    26.98   2.42  48.27    1.17    2.76   0.11   130.85   367.70   0.76   4.05

sdb             52.48   28.34    547.04   1371.62     0.15     0.31   0.28   1.07    0.60    0.85   0.06    10.42    48.40   0.64   5.20

تحلیل خروجی

  • ستون %util: درصد زمانی که دستگاه مشغول عملیات I/O بوده است. مقادیر بالا نشان‌دهنده مصرف زیاد دیسک است.
  • ستون await: میانگین زمان انتظار برای عملیات I/O. مقادیر بالا می‌تواند نشان‌دهنده تأخیر در عملیات I/O باشد.

یک نمونه دیگر از این دستور

iostat -d 2: نمایش آمار دستگاه‌های ذخیره‌سازی هر دو ثانیه.

کاربرد پیشرفته

در محیط‌های پایگاه داده، iostat می‌تواند برای شناسایی مشکلات I/O و تأخیرهای احتمالی در دسترسی به دیسک‌ها مورد استفاده قرار گیرد. این ابزار می‌تواند به تعیین این که آیا سیستم نیاز به بهبود ظرفیت ذخیره‌سازی دارد یا خیر، کمک کند.

 

ابزار sar

معرفی

sar (System Activity Report) ابزاری است که آمار جامعی از فعالیت‌های سیستم شامل CPU، حافظه، شبکه و I/O را جمع‌آوری می‌کند. این ابزار برای تحلیل تاریخی عملکرد سیستم و شناسایی الگوهای استفاده مفید است.

دستورها و پارامترها

  • sar -u 1 5: نمایش آمار CPU هر ثانیه برای پنج بار.

[root@vahiddb ~]# sar -u 1 5

Linux 5.15.0-206.153.7.1.el8uek.x86_64 (vahiddb)        07/28/2024      _x86_64_        (4 CPU)

10:29:49 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle

10:29:50 AM     all     26.84      0.00      4.72      0.00      0.00     68.44

10:29:51 AM     all     24.26      0.00      4.44      0.00      0.00     71.30

10:29:52 AM     all     25.22      0.00      3.23      0.29      0.00     71.26

10:29:53 AM     all     25.29      0.00      4.71      0.29      0.00     69.71

10:29:54 AM     all     24.04      0.00      4.45      0.00      0.00     71.51

Average:        all     25.13      0.00      4.31      0.12      0.00     70.44

تحلیل خروجی

  • ستون %idle: درصد زمانی که CPU بیکار است. مقادیر پایین ممکن است نشان‌دهنده بار زیاد بر روی CPU باشد.
  • ستون kbmemfree: مقدار حافظه آزاد. مقادیر پایین ممکن است نشان‌دهنده کمبود حافظه باشد.

 

دو نمونه دیگر از این دستور:

  • sar -r 1 5: نمایش آمار حافظه هر ثانیه برای پنج بار.
  • sar -n DEV 1 5: نمایش آمار شبکه هر ثانیه برای پنج بار.

 

کاربرد پیشرفته

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

ابزار dstat

معرفی

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

دستورها و پارامترها

  • dstat -cdngy: نمایش آمار CPU، دیسک، شبکه و وضعیت کلی سیستم.

[root@vahiddb ~]# dstat -cdngy

----total-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw

 22   5  58   0   0|7164B 4094B| 162B  338B|   0     0 |7606  5158

 22   4  59   0   0|  71k   16k|  60B  198B|   0     0 |7322  5154

 23   5  57   0   0|8187B    0 |  60B  150B|   0     0 |8342  5615

 24   5  59   0   0|7170B 4097B| 120B  210B|   0     0 |8228  5535

 23   5  58   1   0| 136k   16k|  60B  150B|   0     0 |8024  5506

تحلیل خروجی

  • ستون cpu: درصد استفاده از CPU برای کاربر، سیستم و idle.
  • ستون disk: تعداد عملیات خواندن و نوشتن دیسک.

 

کاربرد پیشرفته

dstat می‌تواند به سرعت وضعیت کلی سیستم را بررسی کند و اطلاعات دقیقی در مورد مصرف منابع ارائه دهد. این ابزار برای شناسایی مشکلات ناشی از مصرف بیش از حد منابع توسط پردازش‌ها بسیار مفید است.

 

ابزار Netstat

معرفی:

netstat یکی از ابزارهای قدرتمند برای مشاهده اطلاعات شبکه در سیستم‌عامل‌های Unix و Linux است. این ابزار به شما اجازه می‌دهد تا اتصالات شبکه، جدول‌های مسیریابی، آمار رابط‌ها و بسیاری از جزئیات شبکه دیگر را مشاهده کنید.

دستورها و پارامترها:

netstat -tuln

[root@vahiddb ~]# netstat -tuln

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

tcp        0      0 127.0.0.1:6013          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6012          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6014          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:2016          0.0.0.0:*               LISTEN

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

tcp6       0      0 ::1:6011                :::*                    LISTEN

tcp6       0      0 ::1:6010                :::*                    LISTEN

tcp6       0      0 ::1:6013                :::*                    LISTEN

tcp6       0      0 ::1:6012                :::*                    LISTEN

tcp6       0      0 ::1:6014                :::*                    LISTEN

tcp6       0      0 :::5500                 :::*                    LISTEN

tcp6       0      0 ::1:2016                :::*                    LISTEN

tcp6       0      0 :::1521                 :::*                    LISTEN

tcp6       0      0 :::9011                 :::*                    LISTEN

tcp6       0      0 :::111                  :::*                    LISTEN

tcp6       0      0 :::22                   :::*                    LISTEN

udp        0      0 0.0.0.0:111             0.0.0.0:*

udp        0      0 127.0.0.1:323           0.0.0.0:*

udp6       0      0 ::1:46278               :::*

udp6       0      0 ::1:30984               :::*

udp6       0      0 ::1:63775               :::*

udp6       0      0 :::111                  :::*

udp6       0      0 ::1:323                 :::*

udp6       0      0 ::1:25811               :::*

udp6       0      0 ::1:59871               :::*

udp6       0      0 ::1:51900               :::*

udp6       0      0 ::1:28443               :::*

تحلیل خروجی netstat -tuln:

ستون‌ها:

Proto (پروتکل):

نوع پروتکل شبکه را نشان می‌دهد، معمولاً tcp یا udp.

Recv-Q (صف دریافت):

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

Send-Q (صف ارسال):

تعداد بایت‌هایی که در صف ارسال هستند و هنوز ارسال نشده‌اند. مقدار غیرصفر می‌تواند نشان‌دهنده‌ی مشکلات در ارسال داده‌ها باشد.

Local Address (آدرس محلی):

آدرس IP محلی و شماره پورت مرتبط با آن را نشان می‌دهد. این آدرس‌ها و پورت‌ها به صورت عددی نمایش داده می‌شوند. 0.0.0.0 به معنای گوش دادن به همه‌ی آدرس‌های IP محلی است.

Foreign Address (آدرس خارجی):

آدرس IP و شماره پورت مقصد (کلاینت‌ها یا سرورهای دیگر) را نشان می‌دهد. برای برخی از سرویس‌ها ممکن است 0.0.0.0 باشد که به معنای اتصالات ورودی بدون مقصد مشخص است.

State (وضعیت):

این ستون برای پروتکل‌های tcp وجود دارد و وضعیت فعلی اتصال را نشان می‌دهد. برای پروتکل‌های udp این ستون وجود ندارد زیرا udp پروتکل بدون اتصال است.

  • netstat -a: نمایش همه‌ی اتصالات شبکه (فعال و غیرفعال).
  • netstat -t: نمایش فقط اتصالات TCP.
  • netstat -u: نمایش فقط اتصالات UDP.
  • netstat -n: نمایش آدرس‌ها و پورت‌ها به صورت عددی.
  • netstat -p: نمایش شماره فرآیند مرتبط با هر اتصال.
  • netstat -r: نمایش جدول مسیریابی.

تحلیل خروجی:

خروجی netstat شامل ستون‌هایی مانند Proto (پروتکل)، Recv-Q (صف دریافت)، Send-Q (صف ارسال)، Local Address (آدرس محلی)، Foreign Address (آدرس خارجی)، و State (وضعیت اتصال) می‌باشد. تحلیل این خروجی به شما کمک می‌کند تا وضعیت فعلی اتصالات شبکه و منابع مصرف‌شده توسط هر اتصال را بررسی کنید.

کاربرد پیشرفته:

  • تشخیص مشکلات شبکه: با استفاده از netstat می‌توانید اتصالات غیرعادی را شناسایی کنید که ممکن است نشان‌دهنده‌ی حملات یا مشکلات شبکه باشد.
  • مانیتورینگ عملکرد: این ابزار به مدیران سیستم کمک می‌کند تا ترافیک شبکه را نظارت کرده و از تنگناهای احتمالی آگاه شوند.

ابزار ss

معرفی:

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

دستورها و پارامترها:

  • ss -t: نمایش اتصالات TCP.
  • ss -u: نمایش اتصالات UDP.
  • ss -n: نمایش آدرس‌ها و پورت‌ها به صورت عددی.
  • ss -p: نمایش فرآیندها و شماره فرآیندهای مرتبط.
  • ss -r: نمایش اطلاعات مسیریابی.
  • ss -s: نمایش آمار خلاصه‌ای از اتصالات شبکه.

تحلیل خروجی:

خروجی ss شبیه به netstat است اما با جزئیات بیشتر و قابلیت فیلترگذاری بهتر. این ابزار اطلاعات دقیقی از جمله پورت‌های محلی و خارجی، وضعیت اتصال و اطلاعات فرآیندهای مرتبط با هر اتصال را ارائه می‌دهد.

کاربرد پیشرفته:

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

 

منابع

این مقاله می‌تواند به عنوان یک منبع برای DBAها و مدیران سیستم باشد که نیاز به مانیتورینگ و بهینه‌سازی عملکرد سیستم‌های لینوکس دارند.