Kiểm tra tình trạng tài nguyên của server Linux
Đột nhiên một ngày dịch vụ của bạn ngừng hoạt động, hãy SSH vào server, nếu không thể SSH được, kiểm tra xem server có hết RAM không giống như bài hướng dẫn tại đây
Nếu hết RAM và server đang treo, bạn cần phải khởi động lại server.
Trường hợp bạn vẫn có thể truy cập vào được server, bạn nên kiểm tra tổng quát một lượt các tài nguyên hiện tại:
+ kiểm tra tình trạng sử dụng RAM
+ kiểm tra tình trạng sử dụng CPU
+ kiểm tra xem ổ cứng có bị đầy?
+ kiểm tra xem server hiện có đang full băng thông?
1. Kiểm tra tình trạng sử dụng RAM
KHi truy cập vào website của bạn báo lỗi “Error establishing a database connection” và trên giao diện log của server tại trang quản trị sẽ có những log dạng như:
“Out of memory: Kill process….”
tức là server của bạn sử dụng đã hết RAM.
Nếu vẫn truy cập được vào server, bạn có thể dễ dàng kiểm tra lượng RAM free bằng câu lệnh free
Tuy nhiên, bạn nên xác định trước là có thể sẽ không truy cập được vào server hoặc truy cập được nhưng mọi thao tác bên trong đều rất chậm, bạn cần kiên nhẫn.
# sudo free -m
total used free shared buffers cached
Mem: 7975 7814 161 0 199 5523
-/+ buffers/cache: 2091 5883
Swap: 9534 459 9075
Nếu lượng free sau khi bỏ buffers/cache càng nhỏ tức là server của bạn càng thiếu RAM, bạn cần tăng RAM lên để đảm bảo server có thể hoạt động ổn định.
Ngoài ra, để kiểm tra chi tiết tiến trình nào đang chiếm dụng RAM, bạn có thể sử dụng công cụ giám sát trạng thái của server – htop
Chúng ta sẽ cùng nói về công cụ này ở mục 2. Kiểm tra tình trạng sử dụng CPU
2. Kiểm tra tình trạng sử dụng CPU
Nếu bạn SSH vào server và thao tác các lệnh chậm, một khả năng nữa xảy ra là server đang sử dụng hết CPU, hay thường gọi là full CPU
Để kiểm tra, chúng ta sử dụng công cụ giám sát hệ thống htop
Cài đặt:
# sudo apt-get install htop // Ubuntu
# sudo yum install htop // CentOS
Khởi động htop:
# htop
Ngay khi chạy lệnh, bạn sẽ nhìn thấy tình trạng CPU và RAM đang được sử dụng.
Mặc định các tiến trình đã được sắp xếp theo mức độ chiếm dụng CPU, để sắp xếp các tiến trình đang chiếm dụng RAM, các bạn có thể sử dụng phím Shift + M hoặc ấn F6 để tùy chọn sắp xếp.
Xem thêm hướng dẫn sử dụng htop
3. Kiểm tra mức độ sử dụng ổ cứng
Khi ổ cứng bị đầy (tức mức độ sử dụng 100%), lúc này ổ cứng sẽ không thể ghi thêm được dữ liệu.
Nếu bạn đang sử dụng server chạy website, khi truy cập vào website có thể sẽ báo lỗi “Error establishing a database connection”
Lúc này, trên giao diện log của server tại trang quản trị sẽ có những log dạng như:
“OSError: [Errno 28] No space left on device:….”
Bạn cần phải truy cập trực tiếp vào bên trong server, kiểm tra chính xác lại tình trạng ổ cứng bằng câu lệnh:
# sudo df -h
Filesystem Size Used Avail Use% Mounted on
udev 990M 12K 990M 1% /dev
tmpfs 201M 412K 200M 1% /run
/dev/vda1 24G 16G 7.2G 69% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 1001M 72K 1001M 1% /run/shm
none 100M 0 100M 0% /run/user
Câu lệnh này sẽ hiển thị tình trạng sử dụng của các phân vùng, ở đây chúng ta sẽ lưu ý thư mục root (/), khi use 100% tức là ổ cứng của bạn đã đầy, cần xóa bớt dữ liệu, thông thường nên kiểm tra các log hệ thống trong /var/log hoặc log trong control panel.
4. Mức độ sử dụng băng thông
Đôi khi, website của bạn không thể truy cập được, báo lỗi Request Timeout hoặc Service Temporarily Overloaded. Lúc này, bạn nên cân nhắc tới việc kiểm tra băng thông của server.
Mặc định, một server sẽ được free 100Mbps băng thông khi khởi tạo (tương ứng với khoảng 12,5MB), nếu lượng kết nối với server quá nhiều, server sẽ bị “nghẽn”, không thể trao đổi thông tin với bên ngoài.
Để kiểm tra mức độ sử dụng băng thông, bạn có thể sử dụng công cụ bmon.
Cài đặt:
# sudo apt-get install bmon //Ubuntu
# sudo yum install bmon //CentOS
Khởi động bmon để kiểm tra tình trạng sử dụng băng thông:
# bmon
RX Bytes/second: là received bytes per second (byte nhận được mỗi giây)
TX Bytes/second: Transmitted bytes per second (byte truyền mỗi giây)
Mỗi server sẽ có 2 card mạng, eth0 và eth1
eth1 dùng để kết nối ra internet, bạn có thể theo dõi mình interface này bằng câu lệnh:
# bmon -p eth1
Thông số hiện tại là server đang truyền đi 3,76MB và nhận vào 802bytes