12/08/2018, 16:58

Kiểm tra thông tin, cấu hình, perfomance Server

Khi bạn làm việc với server cụ thể là cài cắm các gói, phần mềm hay deploy dự án bạn sẽ cần phải nắm được thông tin về server, version những thứ mình sử dụng hay những yếu tố ảnh hưởng gây hại đến project của mình, nếu có đội Infa hỗ trợ thì tốt nhưng tốt hơn hết bạn cũng nên biết để tự mình giải ...

Khi bạn làm việc với server cụ thể là cài cắm các gói, phần mềm hay deploy dự án bạn sẽ cần phải nắm được thông tin về server, version những thứ mình sử dụng hay những yếu tố ảnh hưởng gây hại đến project của mình, nếu có đội Infa hỗ trợ thì tốt nhưng tốt hơn hết bạn cũng nên biết để tự mình giải quyết trước và họ sẽ support mình những khi cần thiết.

Chi tiết nhất về cả Kernel version hay HĐH đang sử dụng bạn có thể sử dụng lệnh: $ cat /proc/version

Linux version 4.10.0-42-generic (buildd@lgw01-amd64-012) (gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2) ) #46-Ubuntu SMP Mon Dec 4 14:38:01 UTC 2017

$ uname -a

Linux hungnup 4.10.0-42-generic #46-Ubuntu SMP Mon Dec 4 14:38:01 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Kết quả cho thấy server đang sử dụng HĐH Ubuntu trên Kernel Linux version 4.10.0-42-generic (buildd@kissel) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ).

Một kết quả khác:

$ cat /proc/version

Linux version 3.10.0-327.36.3.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #1 SMP Mon Oct 24 16:09:20 UTC 2016

$ uname -a

Linux CENTOS-WEB-1 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Muốn kiểm tra chi tiết thông tin về HĐH bạn có thể sử dụng lệnh:

$ lsb_release -a

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 17.04
Release:	17.04
Codename:	zesty

$ lsb_release -d

Description:	Ubuntu 17.04

Lưu ý: Để sử dụng lệnh “lsb_release” bạn có thể cần phải cài đặt:

  • Ubuntu: $ sudo apt-get update $ sudo apt-get install lsb-release
  • CentOs: # sudo yum install redhat-lsb

Chi tiết nhất bạn có thể sử dụng lệnh:

$ cat /etc/*release*

Thông tin CPU:

Thông thường các bạn hay sử dụng lệnh: lscpu nó dễ nhớ và cung cấp cơ bản các thông tin của CPU, kết quả như sau: $ lscpu

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 94
Model name:            Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz
Stepping:              3
CPU MHz:               845.935
CPU max MHz:           3200,0000
CPU min MHz:           800,0000
BogoMIPS:              4608.00
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-3

Nếu muốn chi tiết hơn về từng core một bạn có thể sử dụng các lệnh khác:

$ cat /proc/cpuinfo //or $ less /proc/cpuinfo

Kiểm tra thông tin memory

  • Thông thường, đơn giản, dễ nhớ, cung cấp đủ các thông tin mà bạn quan tâm về các thông số memory hiện tại của server đó là lệnh: free -m (số liệu hiện thị tính theo đơn vị Mbs) Kết quả: $ free -m

    total        used        free      shared  buff/cache   available
    Mem:         7855        1146        5926         383         783        6081
    Swap:        8067         489        7578
    
  • Ngoài ra các bạn có thể sử dụng lệnh:

    • $ free - Số liệu hiện thị tính theo đơn vị Kbs.
    • $ free -gt - Số liệu hiện thị tính theo đơn vị Gbs.
  • Chi tiết, rõ ràng nhất về các thông số của Memory bạn có thể sử dụng lệnh bên dưới:

    • cat /proc/meminfo

Các thông tin về Hard Disks …

Hiển thị thông tin các disk được cài đặt và dung lượng tương ứng:

$ sudo fdisk -l | grep '^Disk /dev/'

Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Kiểm tra thông tin đọc ghi của ổ cứng (Cái này có thể bị ảnh hưởng bởi tốc độ mạng kiểu như server bạn đặt ở Mỹ trong khi AAG liên tục bị đứt và người ta đổi cho thằng em cá mập haiz) >>>>> Cố gắng đợi một chút nhé :v

$ dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

16384+0 records in
16384+0 records out
1073741824 bytes (1,1 GB) copied, 10,0146 s, 107 MB/

Các server hiện nay với ổ cứng có tốc độ đọc ghi tốt con số 107 Mb/s sẽ thường > 100 Mb/s là ổn (Tham khảo trên mạng là vậy chứ thực chất mình không rõ lắm).

Liệt kê tất cả các PCI Devices:
  • $ lspci
Ngoài ra bạn có thể sử dụng các lệnh # top, # htop, # atop để kiểm tra thông tin memory, cpu sử dụng.
  • $ top
  • $ htop
  • $ atop

Mỗi khi server có vấn đề gì đó như chạy chậm, lăn đùng ngã ngửa bạn cần phải xem xem CPU hay memory có bị chiếm dụng bởi một process nào đó hay hệ thống chúng ta ngốn CPU, memory một cách quá thể để chúng ta tối ưu lại code, sử dụng lệnh top cho kết quả như sau:

  • Lệnh "top" Hiển thị danh sách các tiến trình của hệ điều hành và thông tin chi tiết của chúng. Muốn thoát khỏi dùng phím q $ top

    Nếu server của bạn có nhiều hơn 1 core, bạn nhấn phím số 1 để hiện thị chi tiết thông số của từng core:

    Một vài thông số của CPU (Dòng 3 %Cpu(s)
    • %us (user cpu time): phần trăm do tiến trình của người dùng (non root) sử dụng
    • %sy (system cpu time): phần trăm do tiến trình của hệ thống (root) sử dụng
    • %ni (user nice cpu time): phần trăm do các tiến trình có mức độ ưu tiên thấp sử dụng
    • %id (idle cpu time): phần trăm CPU đang rảnh
    • %wa (io wait cpu time): phần trăm CPU để đợi trong khi các tiến trình I/O đang xử lý
    • %hi (hardware irq): phần trăm để xử lý gián đoạn phần cứng
    • %si (software irq): phần trăm để xử lý gián đoạn phần mềm
    • %st (steal time): phần trăm do máy ảo sử dụng
    Ngoài ra còn các hot key khác như
    • t: Ẩn/Hiện các thông tin tóm tắt (Dòng Tasks, CPU)
    • m: Ẩn/Hiện thông tin về memory
    • f: Hiện thị, giải thích ý nghĩa, thay đổi thứ tự hiển thị các cột của phần thông tin các process (Title của cột có nền trắng)
    • r: Renice command.
    • k: Kill command.
    • ......
  • Lệnh "htop" Dựa trên nền tảng nguồn mở tự do và miễn phí dành cho Linux. Rất dễ sử dụng. Bạn có thể chọn các process để kill hoặc renicing mà không sử dụng PID của nó. Nó có thể được coi là Trình quản lý tiến trình bằng giao diện đơn giản bạn có thể sử dụng các phím mũi tên lên xuống để chọn các process tương ứng và thực thi 1 hành động nào đó. Mặc định htop không được cài đặt trên ubuntu hoặc centOS, Để có thể sử dụng được lệnh htop bạn có thể install bằng command:

    • Ubuntu: $ sudo apt-get install htop

    • Centos: $ sudo yum install htop

    • Sử dụng: htop

  • Lệnh "atop" Tương tự như htop, atop cũng được coi là Trình quản lý tiến trình bằng giao diện. Có vẻ atop mạnh mẽ hơp top, htop khá nhiều.

    Như bạn thấy Atop hiển thị cả các tài nguyên phần cứng quan trọng nhất. Bạn có thể nhanh chóng xem CPU, bộ nhớ, đĩa và hiệu suất mạng. Nó cho thấy các quy trình nào chịu trách nhiệm về tải được chỉ định liên quan đến CPU và tải bộ nhớ trên một cấp độ quá trình.

Ngoài những lệnh trên các bạn có thể tham khảo một vài link sau để có thể kiểm tra server một các cẩn thận nhất:
  • Kiểm tra nhiệt độ của các CPU: $ sensors

  • Để sử dụng được lệnh này bạn cần cài đặt nó:

    • Ubuntu: $ sudo apt-get install lm-sensors
    • Centos: # sudo yum install lm_sensors

Ngoài ra bạn có thể tìm hiểu thêm các lệnh quản lý, giám sát hệ thống được chia sẻ tại đây: https://www.cyberciti.biz/tips/top-linux-monitoring-tools.html

Mình cũng đã thổ lộ mình chỉ là thằng coder, về infa cũng còn nhiều hạn chế, comment về một sai sót nào đó để mình sửa hoặc một vấn đề bạn quan tâm chúng ta sẽ cùng tìm hiểu.

Bài viết tiếp theo mình sẽ cố gắng tìm hiểu về Configuration and Optimizing Apache hoặc Nginx + PHP-FPM

0