จะตรวจสอบ CPU และหน่วยความจำบน Linux ได้อย่างไร

รู้ว่าแต่ละกระบวนการหรือทั้งระบบใช้ CPU หรือหน่วยความจำเท่าใด

ในฐานะผู้ดูแลระบบ คุณมักจะต้องจัดการกับเหตุการณ์ที่แอปพลิเคชันทำงานช้าหรือไม่ตอบสนองอันเนื่องมาจากการใช้งาน CPU/หน่วยความจำ/เครือข่ายสูง หากเซิร์ฟเวอร์โฮสต์เพียงกระบวนการเดียว ก็จะทราบได้ง่ายว่าเมื่อใดที่กระบวนการนั้นใช้ทรัพยากรทั้งหมด อย่างไรก็ตาม ลองนึกภาพเซิร์ฟเวอร์ที่ใช้ร่วมกันซึ่งมีหลายบริการทำงานอยู่ และคุณจำเป็นต้องค้นหาว่าเซิร์ฟเวอร์ใดกำลังกินทรัพยากรทั้งหมด

มีซอฟต์แวร์ตรวจสอบหลายตัวที่ทำสิ่งนี้นอกกรอบ แต่ถ้าคุณไม่มีหรือกำลังมองหาโซลูชันแบบใช้คำสั่ง ไปได้เลย พวกเขาทั้งหมดฟรี!

สูงสุด

คุณอาจต้องการเริ่มต้นด้วยการดูผลลัพธ์บนสุดหรือ htop เพื่อดูภาพรวมของกระบวนการ

ดังที่คุณเห็นด้านล่าง มันให้แนวคิดที่ยอดเยี่ยมเกี่ยวกับกระบวนการทั้งหมดที่ใช้ ถ้าดูอันแรกคือ MySQL ใช้ CPU 11.9% และ CPU 2.5%

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld                                                                                                         
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm                                                                                                        
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm                                                                                                        
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm                                                                                                        
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm                                                                                                        
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm                                                                                                        
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm                                                                                                        
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm                                                                                                        
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm                                                                                                        
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty                                                                                                      
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata                                                                                                        
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin                                                                                                    
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash                                                                                                           
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server                                                                                                   
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched                                                                                                      
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd                                                                                                        
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim                                                                                                
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego                                                                                                         
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen                                                                                                     
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

ด้านบนถูกติดตั้งบนการกระจาย Linux เกือบทั้งหมด

  วิธีทำให้ Linux ดูเหมือน macOS

เมื่อคุณระบุตัวผู้ต้องสงสัยได้แล้ว คุณอาจต้องการมุ่งความสนใจไปที่กระบวนการนั้นแทนทุกสิ่งอย่างที่คุณเห็นด้านบน คุณยังสามารถใช้คำสั่งบนสุดได้ แต่มีอาร์กิวเมนต์อยู่บ้าง

สมมติว่าคุณทราบรหัสกระบวนการ (PID); คุณสามารถใช้คำสั่งด้านล่าง

ด้านบน -p $PID

ด้านล่างตัวอย่างของ top -p 3102

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

คุณสามารถใช้ grep กับ top ได้ ด้านล่างเป็นตัวอย่างการตรวจสอบการใช้งาน Docker

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd                                                                                                        
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen                                                                                                     
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd                                                                                                        
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd                                                                                                        
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen                                                                                                     
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

คล้ายกับด้านบน แต่มีข้อมูลเพิ่มเติม อย่างที่คุณทำได้ มีคอลัมน์คำสั่ง ซึ่งสะดวกต่อการระบุเส้นทางของกระบวนการ และยังมีสีสันอีกด้วย

  วิธีใช้ rclone เพื่อสำรองข้อมูลไปยัง Google Drive บน Linux

htop อาจไม่ได้รับการติดตั้งตามค่าเริ่มต้น แต่คุณสามารถทำได้ตามด้านล่าง

ติดตั้ง htop บน Ubuntu

apt-get install htop

ติดตั้ง htop บน CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

เหลือบมอง

ตามที่ชื่อบอกไว้ คุณจะได้รับมุมมองการใช้งานระบบในหน้าจอเดียว กระบวนการที่ทำงานอยู่จะถูกจัดเรียงตามการใช้งาน CPU

คุณสามารถติดตั้งการเหลือบมองบน CentOS 8 โดยใช้ DNF ดังต่อไปนี้

dnf install glances

สำหรับ CentOS7 คุณสามารถใช้YUM

yum install glances

บนยอด

คล้ายกับรายการด้านบนแต่มีคุณสมบัติที่ยอดเยี่ยมในการบันทึกผลลัพธ์ในไฟล์เพื่อให้คุณสามารถดูได้ในภายหลัง ลองนึกภาพว่ามีรูปแบบของปัญหาในช่วงเวลาหนึ่งๆ คุณสามารถกำหนดเวลาเขียนเอาต์พุตในไฟล์ผ่าน crontab หรืออื่น ๆ และหลังจากนั้นคุณสามารถเล่นได้

ในการบันทึกผลลัพธ์ในไฟล์:

atop -w filename

และในการเล่น:

atop -r filename

รองรับหลายอาร์กิวเมนต์ เช่น ช่วงเวลา ตัวอย่าง ฯลฯ และฉันขอแนะนำอย่างยิ่งให้ดูที่ man page

หากคุณสนใจในการแก้ไขปัญหาแบบเรียลไทม์ ให้ดำเนินการที่ด้านบนสุดและคุณจะเห็นดังนี้

คุณสามารถติดตั้งบนสุดได้ดังนี้

dnf install atop

ปล

มาตรวจสอบคำสั่ง ps กันเถอะ

คุณสามารถใช้คำสั่ง ps กับ PID เพื่อพิมพ์การใช้งาน CPU และหน่วยความจำ

ps -p $PID -o %cpu,%mem

ผลลัพธ์ควรมีลักษณะเช่นนี้

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

มอน

เครื่องมือตรวจสอบบรรทัดคำสั่งแบบโต้ตอบสำหรับ CPU หน่วยความจำ ดิสก์ เครือข่าย NFS และการใช้หน่วยความจำเสมือน หากต้องการดูกระบวนการด้านบน (ตามการใช้งาน) คุณสามารถดำเนินการ nmon และกดปุ่ม t

  วิธีใช้คำสั่งเปลี่ยนชื่อบน Linux

คุณสามารถติดตั้ง nmon ได้ดังนี้

dnf install nmon

โมนิต

โมนิต เป็นโซลูชันโอเพ่นซอร์สบนเว็บและบรรทัดคำสั่งเพื่อตรวจสอบทรัพยากรเซิร์ฟเวอร์, daemons, ไฟล์, ไดเร็กทอรี, ระบบไฟล์ ฯลฯ

Monit ยังมีวิดเจ็ตสุดเจ๋งอีกด้วย

ซอฟต์แวร์ตรวจสอบน้ำหนักเบา แต่มีมากกว่าที่จะสำรวจที่นี่

Monitorix

ยูทิลิตี้โอเพ่นซอร์สน้ำหนักเบาเพื่อตรวจสอบเซิร์ฟเวอร์ Linux Monitorix มี HTTP ในตัว คุณจึงตรวจสอบการใช้งานและสิ่งอื่น ๆ บนเว็บได้ รายงานการใช้งานอื่นๆ ได้แก่:

  • เคอร์เนล/อุณหภูมิ
  • ระบบไฟล์และ I/O
  • ปริมาณการใช้เครือข่าย
  • Apache/Mail/FTP/Nginx
  • MySQL/วานิช/Memcached

Monitorix ยังมีการกำหนดค่าการแจ้งเตือนเพื่อให้คุณได้รับการแจ้งเตือนเมื่อมีสิ่งผิดปกติ จะเป็นทางเลือกที่ดีเมื่อคุณจัดการเซิร์ฟเวอร์บนคลาวด์และมองหาโซลูชันการตรวจสอบเชิงรุก

เน็ตดาต้า

เน็ตดาต้า คือการตรวจสอบประสิทธิภาพแบบเรียลไทม์สำหรับทรัพยากรระบบ แอปพลิเคชัน เว็บเซิร์ฟเวอร์ ฐานข้อมูล DNS อีเมล เซ็นเซอร์ฮาร์ดแวร์ และอีกมากมาย เป็นโอเพ่นซอร์สและเริ่มต้นได้ง่าย ข้อมูลทั้งหมดจะถูกรวบรวม จัดเก็บ และสตรีมเพื่อให้คุณเห็นภาพแบบโต้ตอบ ข้อมูลจะถูกเก็บรวบรวมทุกวินาที คุณจึงไม่พลาดทุกสิ่ง

เป็นที่รักของผู้นำในอุตสาหกรรมมากมาย

ดังนั้นสิ่งที่คุณรอคือ พยายามควบคุมเซิร์ฟเวอร์ Linux ของคุณ

btop

btop เป็นการตรวจสอบทรัพยากรที่มีประโยชน์ซึ่งโต้ตอบได้อย่างสมบูรณ์พร้อม UI ที่สวยงามซึ่งช่วยให้คุณจัดการเซิร์ฟเวอร์ Linux

คุณสามารถเห็นภาพกระบวนการในมุมมองแบบต้นไม้ กรองจากรายการกระบวนการ และจัดการหมูทรัพยากรได้อย่างง่ายดาย btop ยังมาพร้อมกับกราฟการปรับขนาดอัตโนมัติที่แสดงการใช้งานเครือข่าย

นอกจากนี้ คุณยังสามารถตรวจสอบความเร็วของดิสก์และทำกิจกรรม I/O ให้เสร็จสิ้นได้

มีมากกว่านั้นที่คุณสามารถสัมผัสได้บน Linux, FreeBSD และ macOS

บทสรุป

ฉันหวังว่าเครื่องมือข้างต้นจะช่วยให้คุณเห็นภาพการใช้งานเซิร์ฟเวอร์แบบเรียลไทม์ เพื่อให้คุณดำเนินการที่จำเป็นได้ หากคุณเพิ่งเริ่มต้นในฐานะผู้ดูแลระบบและต้องการรับการฝึกอบรมแบบลงมือปฏิบัติจริง ให้ลองดูสิ่งนี้ หลักสูตร Udemy.

เรื่องล่าสุด

x