Home Tin tức OOM killed process là gì

OOM killed process là gì

by QuantriVPS.com
36 views

Giới thiệu về OOM Killer

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áp động đỏ thì hệ thống phải có những động tác để ngăn chặn việc này.

VD: Quy định của luật giao thông là mỗi xe máy chỉ được phép chở 2. Tiến trình nào kẹp 3, kẹp 4 sẽ lập tức có cách anh CSGT OOM tiến hành tuýt còi, bắt process đó tạm dừng và đưa lên đồn.

Làm thế nào để biết có tiến trình bị OOM Killer xử lý?

Bất cứ khi nào OOM Killer được gọi để xử lý 1 tiến trình, nó sẽ ghi thông tin vào nhật ký hệ thống bao gồm tiến trình nào bị giết và tại sao. Chúng ta kiểm tra như sau :

dmesg | egrep -i "killed process"
  • Hoặc
dmesg
  • Output sẽ như sau:
[9429504.758314] OOM killed process 3187 (mysqld) total-vm:1861840kB, anon-rss:132728kB, file-rss:316kB
[9429504.772085] OOM killed process 3188 (mysqld) total-vm:1861840kB, anon-rss:132728kB, file-rss:492kB
[9429573.606708] OOM killed process 3365 (mysqld) total-vm:1846204kB, anon-rss:102392kB, file-rss:0kB

Log trên có nguồn gốc từ hệ điều hành Linux và đang ghi lại một sự kiện OOM (Out of Memory). OOM là viết tắt của “Out of Memory”, tức là hệ thống đã hết bộ nhớ và không thể cấp thêm bộ nhớ cho một quy trình nào đó. Khi điều này xảy ra, hệ điều hành sẽ “giết” (kill) các quy trình để giải phóng bộ nhớ và đảm bảo hoạt động tiếp diễn của hệ thống.

Trong log trên, các quy trình mysqld (MySQL server) có các tiến trình có ID 3187, 3188 và 3365 đã bị “giết” bởi hệ thống vì tiêu thụ quá nhiều bộ nhớ. Cụ thể, log cung cấp thông tin về dung lượng bộ nhớ ảo (total-vm), dung lượng bộ nhớ không định danh (anon-rss) và dung lượng bộ nhớ file (file-rss) của từng quy trình.

Vậy nguyên nhân ở đây là gì?

Nguyên nhân chính là trên hệ thống thiếu RAM, nên kernel đã kill tiến trình sử dụng nhiều RAM nhất và ở đây là dịch vụ mysqld nên sẽ nhận được thông báo Error Establishing A Database Connection

Hướng xử lý

Đối với trường hợp website sử dụng tài nguyên quá nhiều mà tài nguyên trên máy chủ có hạn thì sẽ không thể đáp ứng đủ. Giống như việc ” Bạn không thể đổ 1- lít nước vào cái xô 5 lít “.

Vì vậy khi gặp vấn đề này bạn nên tối ưu lại website và nâng cấp tài nguyên máy chủ lên để đáp ứng hoạt động của website

Bài viết liên quan

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

QUẢN TRỊ VPS

Một sản phẩm của Đỗ Trung Quân

QuantriVPS.com – Thay bạn quản trị máy chủ cho bạn