Chạy top
trong chế độ hàng loạt để báo cáo kích thước bộ nhớ theo định kỳ có thể được sử dụng để xem ai đang sử dụng bộ nhớ khi mọi thứ đi về phía nam. Chạy sar
trong chế độ hàng loạt sẽ cung cấp một số chẩn đoán tốt về sử dụng bộ nhớ và I / O liên quan. Chạy munin
để giám sát hệ thống sẽ cung cấp cho bạn một biểu đồ với chi tiết tốt về bộ nhớ đang được sử dụng để làm gì. Điều này có thể giúp rất nhiều.
Bạn có thể sử dụng giới hạn.conf để giới hạn kích thước lõi tối đa của chương trình. Đặt đúng, điều này sẽ giết bất kỳ chương trình nào bị rò rỉ bộ nhớ. Điều này hoạt động với mô-đun pam_limits. Giới hạn cũng có thể được thiết lập với ulimits
lệnh.
Bạn đang chạy một vài chương trình có thể sử dụng một lượng lớn bộ nhớ. Một số điều bạn có thể nhìn vào bao gồm.
- Các ứng dụng được lập trình kém chạy dưới
apache2
có thể rò rỉ bộ nhớ. Bạn sẽ thấy kích thước bộ nhớ tăng lên khi điều này xảy ra. Bạn có thể điều chỉnh apache2 để tái chế trẻ em sau một số lần sử dụng nhất định bằng cách đặt MaxRequestsPerChild
thành 100 hoặc hơn. Nếu điều này giải quyết vấn đề, thì bạn cần giải quyết rò rỉ. Tôi sẽ xem cái này trước.
- MySQL có thể cố gắng tải dữ liệu vào bộ nhớ. Nếu bạn có nhiều dữ liệu trong bộ nhớ, điều này có thể gây ra một số sự cố, nhưng không nên kịch tính như bạn đang thấy.
- Nếu bạn có một
tmpfs
hệ thống tệp lớn được gắn, thì bạn có thể bị rò rỉ bộ nhớ nếu các tệp không bị xóa khi sử dụng. Các tập tin lớn sống lâu cũng có thể là một vấn đề.
- Nếu sự cố xảy ra vào khoảng cùng thời gian trong ngày, bạn có thể có một chương trình theo lịch trình bị rò rỉ bộ nhớ.
- Nếu bạn có một chương trình phân bổ bộ nhớ dùng chung, nhưng không giải phóng nó trước khi thoát, bạn sẽ bị rò rỉ bộ nhớ tương đối vô hình. Nếu bộ nhớ chia sẻ bị khóa trong bộ nhớ, thì nó có thể buộc phải tráo đổi. Số lượng bộ nhớ chia sẻ có sẵn thường tương đối hạn chế.
- Gói liquidsoap + icecast có thể gặp phải các vấn đề về bộ đệm sử dụng bộ nhớ. Tôi chưa sử dụng kết hợp này, vì vậy tôi không chắc nó sẽ xuất hiện như thế nào.
Sử dụng bộ nhớ bình thường: Bộ nhớ trống không phải là thứ bạn muốn nhiều. Nếu hệ thống của bạn đã hoạt động trong một thời gian dài và có nhiều bộ nhớ trống thì có gì đó không ổn. Mỗi khi bạn đọc hoặc viết một tập tin, các khối sẽ đi vào bộ đệm. Điều này sẽ làm giảm bộ nhớ miễn phí của bạn, và là một điều tốt. Hệ thống sẽ giữ đủ không gian trống để bắt đầu một vài chương trình mà không cần tìm bộ nhớ ở nơi khác. Vì nhiều chương trình chạy nhanh, bộ nhớ của chúng sẽ được đưa trở lại nhóm miễn phí khi chúng ngừng chạy.
Khi bạn đọc một tệp trong bộ đệm bộ đệm, không cần truy cập đĩa và việc đọc được giải quyết từ bộ đệm bộ đệm. Người viết sử dụng một cơ chế tương tự. Nếu hệ thống của bạn cần bộ nhớ, bộ đệm bộ đệm là một trong những nơi đầu tiên được sử dụng. Hầu hết các bộ đệm có thể được phát hành ngay lập tức.
Nếu bạn bị rò rỉ bộ nhớ, bạn sẽ thấy bộ nhớ trống và cả bộ đệm bắt đầu co lại. Đây vẫn không phải là một vấn đề nghiêm trọng, vì bộ nhớ bị rò rỉ cuối cùng sẽ được chuyển sang không gian trao đổi. Hệ thống của bạn vẫn sẽ chạy tốt cho đến khi bạn lấp đầy không gian hoán đổi và rút xuống không gian trống còn lại để các chương trình điểm không thể bắt đầu. Điển hình là một lượng nhỏ không gian hoán đổi có thể được sử dụng.