Xử lý lỗi OOM Killed Process trên Linux

OOM Killer là gì?

OOM Killer hoặc Out Of Memory Killer là một quá trình mà kernel linux sử dụng khi hệ thống đang trong tình trạng RAM bị quá tải. Như chúng ta đã biết, hệ thống là tập hợp gồm rất nhiều các process (tiến trình) chạy trên đó. Mỗi process đều sử dụng tài nguyên như RAM, CPU, Disk của hệ thống. Tuy nhiên tài nguyên của mỗi hệ thống đều có những giới hạn nhất định, và khi tài nguyên như RAM bị sử dụng tới mức báo động đỏ thì hệ thống phải có những động tác để ngăn chặn việc này.

Chính vì vậy, OOM ra đời và được ví như một cảnh sát giúp giám sát các hoạt động của máy chủ Linux. Và nhiệm vụ của nó là sẽ Kill các process nếu như phát hiện Ram có hiện tượng quá tải. Và dịch vụ sẽ bị ưu tiên Kill đó là MySQL, đây là nguyên nhân mà một số người dùng gặp lỗi MySQL bị stop và website báo lỗi liên quan đến kết nối Database.

Bên dưới là log về OOM Kill Memory mà các bạn có thể tham khảo, các bạn SSH vào VPS và gõsử dụng nhanh lệnh bên dưới

dmesg | egrep -i "killed process"
[15620444.611632] OOM killed process 24119 (mysqld) total-vm:2071912kB, anon-rss:123280kB, file-rss:0kB
[15620444.619911] OOM killed process 24129 (mysqld) total-vm:2071912kB, anon-rss:124068kB, file-rss:0kB
[15620444.993822] OOM killed process 865 (rspamd) total-vm:304624kB, anon-rss:4988kB, file-rss:4kB
[16034949.519442] OOM killed process 11110 (mysqld) total-vm:2077968kB, anon-rss:217292kB, file-rss:0kB
[16035000.509327] OOM killed process 24251 (mysqld) total-vm:2054820kB, anon-rss:123236kB, file-rss:0kB

Hướng xử lý?

  • Nâng cấp thêm thêm Ram

Với trường hợp này để đảm bảo hoạt động của VPS , các bạn nên cân nhắc nâng cấp thêm Ram cho VPS của mình để chúng có đủ tài nguyên vận hành. Khi đó tình trạng thiếu Ram sẽ không còn và dịch vụ Mysql sẽ không còn bị Kill nữa.

  • Kiểm tra và xử lý tiến trình chiếm dụng Ram

Với cách này các bạn cần có kiến thức nhất định về quản trị máy chủ Linux. Nếu không có kiến thức về vận hành và tối ưu, hãy tìm đến các dịch vụ có chuyên môn để được hỗ trợ.

  • Tạo cron check trạng thái Mysql và tự động start lại nếu bị stop

Với cách này thì bạn có thể tham khảo thêm hướng dẫn bên dưới

– Script check và khởi động lại MySQL khi bị STOP

Picture of Tobi

Tobi

Chào mọi người, mình là Quyền - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau, trau dồi thêm nhiều kiến thức bổ ích hơn nữa.