Vài ngày trước tôi nhận thấy một đĩa I / O chờ và hoạt động của đĩa giảm (rất tuyệt). Sau đó, tôi cũng nhận thấy rằng bộ nhớ cache của tôi đã đầy (*) và bị phân mảnh. Sau đó, tôi xóa bộ nhớ cache. Sau đó, độ trễ của đĩa và hoạt động của đĩa đã nhảy lên mức trước đó (rất tệ).
IOtop cho thấy [jbd2 / sda2-8] và [flush-8: 00] luôn nằm trong top sử dụng đĩa. Đây là Dell R210, RAID 1 phần cứng (H200) có nhiều bộ nhớ trống (tổng cộng 16 GB, trong đó khoảng 8 GB là bộ đệm / bộ đệm).
(*) Bộ đệm là bộ đệm opcode APC cho PHP, giúp giảm quyền truy cập đĩa để thực thi tập lệnh PHP. Bộ nhớ cache đã đầy và bị phân mảnh vì nó bao gồm các tệp từ phiên bản phát triển. Khi tôi nhận thấy điều đó, tôi đã lọc chúng ra.
Câu hỏi là: tại sao đĩa I / O tăng khi về lý thuyết nó nên giảm? Dưới đây là một số biểu đồ từ munin. Bộ nhớ cache đã đầy từ ngày 6 đến 8 tháng 2.
Thay đổi sau khi tôi nhận xét apc.mmap_file_mask như được nói bởi @ cyberx86
Và sau một vài ngày https://serverfault.com/a/362152/88934
apc.mmap_file_mask=/tmp/apc.XXXXXX
), bạn có thể thấy I / O nâng cao. Hãy thử cài đặt apc.mmap_file_mask
để sử dụng bộ nhớ dùng chung (ví dụ /apc.shm.XXXXXX
) hoặc /dev/zero
(bộ nhớ được ẩn danh ẩn danh).