Tôi đang quản lý máy chủ Debian Linux x86_64 với RAM 125 GB, phân vùng trao đổi 10 GB và giá trị trao đổi là 60.
Một miễn phí -gw
bản in đầu ra:
tổng số bộ nhớ đệm chia sẻ miễn phí đã sử dụng có sẵn
Mem: 125 20 1 25 0 103 78
Đổi chỗ: 9 1 7
Mỗi đêm, một công việc định kỳ chạy rất tốn R/W đĩa và tăng bộ nhớ đã sử dụng lên 2GB trong quá trình thực thi trước khi trở về ~20GB.
Trong cùng một khung thời gian, một số quy trình Python được đóng gói trong thời gian dài nhất định (đặc biệt là gunicorn) được phân trang.
Theo thời gian, các quy trình đó sẽ dần lấp đầy hoán đổi - sau một vài tuần, nó sẽ đầy 99%.
Tôi có thể xóa trao đổi bằng cách khởi động lại quy trình hoặc tắt và bật lại bằng trao đổi
và tráo đổi
. Nhưng việc sử dụng trao đổi của các quy trình Python sẽ lại tăng lên từ từ.
Tôi đoán rằng một phần của lời giải thích có thể là do công việc định kỳ hàng đêm, Kernel đang ưu tiên bộ đệm hệ thống tệp cao hơn các quy trình Python. Nhưng tôi cũng đoán rằng một số lỗi phần mềm trong việc xử lý bộ nhớ của các quy trình Python đó có thể là nguyên nhân.
Một người bạn đã gợi ý rằng tôi nên mua thêm RAM để có nhiều chỗ hơn cho bộ đệm của hệ thống tệp. Điều đó có vẻ quá mức với tôi. Tôi muốn chẩn đoán chính xác hơn nguyên nhân hoán đổi và tìm một số giải pháp phần mềm cho sự cố.
Vì vậy, bây giờ tôi chuyển câu hỏi tới Serverfault - bạn nghĩ gì về hiện tượng này và tôi nên bắt đầu từ đâu?