I / O đĩa cao khi sử dụng bộ đệm?


9

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.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây APC cache hiện đang ok.

Thay đổi sau khi tôi nhận xét apc.mmap_file_mask như được nói bởi @ cyberx86

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Và sau một vài ngày https://serverfault.com/a/362152/88934


2
Biểu đồ đó không cho thấy sự gia tăng IO.
psusi

1
Nếu bạn sử dụng ánh xạ bộ nhớ được hỗ trợ tệp (ví dụ 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).
cyberx86

1
@psusi từ ngày 6 tháng 12 12 giờ tối đến ngày 8 tháng 2 12 giờ tối, sau đó tăng lên.
jcisio

@ cyberx86 Tôi vừa thay đổi nó (đã nhận xét dòng đó để sử dụng bộ nhớ được ẩn danh ẩn danh) và có vẻ như sự trợ giúp đó. Tôi sẽ theo dõi thêm vài phút nữa để xem. Cảm ơn.
jcisio

2
@psusi Có / có nhiều vấn đề mà tôi chỉ có thể tiếp tục, không giải thích được: Lỗi bộ nhớ cache 1 / APC (nhưng bộ nhớ cache của hệ điều hành bị tấn công cho các tệp PHP đó, vì vậy rất ít I / O đĩa, thời gian chờ ít hơn nhưng thời gian I / O ít hơn , mà chủ yếu là giao dịch MySQL InnoDB cam kết) Bộ nhớ cache 2 / APC bị tấn công nhưng APC đang sử dụng các tệp (sau đó bộ nhớ cache của hệ điều hành bị lỗi, không biết tại sao) 3 / ngắn gọn, câu hỏi của tôi là "khi bộ đệm hoạt động kém, gần như không có đĩa I / O "- những gì bạn đang nói hoàn toàn trái ngược với điều đó.
jcisio

Câu trả lời:


10

Nếu bạn sử dụng ánh xạ bộ nhớ được hỗ trợ tệp (ví dụ 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). Giữ cài đặt không xác định mặc định nó sử dụng bộ nhớ mm ẩn danh.

Thông thường, các tập tin mmaps là một điều tuyệt vời:

  • So với việc lưu trữ một cái gì đó đầy đủ trong bộ nhớ, các tệp được chia nhỏ thường cần ít bộ nhớ hơn
  • So với việc lưu một cái gì đó vào một tệp, các tệp mmaps yêu cầu I / O đĩa ít hơn (vì ghi có thể được tổng hợp lại với nhau).

Tuy nhiên, so với việc lưu trữ một cái gì đó hoàn toàn trong bộ nhớ, chúng phải chịu thêm I / O - vì vậy khi tập tin thay đổi liên tục. Nhược điểm của việc không sử dụng các tập tin mmapped là thiếu kiên trì - bộ nhớ cache của bạn sẽ không tồn tại khi khởi động lại, vì nó chỉ được lưu trữ trong bộ nhớ.

Do đó, người ta có thể đề nghị rằng trong khi bộ đệm đã đầy và ổn định, nó đã trải qua nhiều thay đổi nhất, phải được ghi liên tục vào đĩa; một khi bộ đệm đã đầy, ttl cho mỗi đối tượng làm chậm tốc độ dữ liệu trong bộ đệm được chuyển qua, làm giảm sự thay đổi và giảm việc ghi đĩa.


4

Sau một vài ngày, bây giờ tôi muốn quay lại với một số biểu đồ. Sự thay đổi cải thiện nhiều tình hình đó. Nó giảm tất cả mọi thứ, ngoại trừ thời gian dịch vụ IO (tôi nghĩ đó là vì không còn tệp PHP nhỏ tầm thường đọc mà rẻ tiền).

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Tải máy chủ (nó đã khá thấp, vì vậy tôi đã không phát hiện ra sự thay đổi).

nhập mô tả hình ảnh ở đây


Bạn có thể vui lòng cung cấp những thay đổi mà bạn đã thực hiện?
Mircea Vutcovici

Đọc bình luận câu hỏi và câu trả lời được chấp nhận. Tôi đã nhận xétapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

Này, xin lỗi đã làm phiền bạn. Bạn đã bao giờ thấy bất kỳ tác dụng phụ nào khi bình luận về dòng mmap_file_mask chưa?. Tôi đang gặp vấn đề tương tự ... và điều này giải quyết rõ ràng các vấn đề sử dụng I / O của tôi. Nhưng tôi đã tự hỏi ... nếu không có gì khác sẽ phá vỡ!. Cảm ơn!
Jorge Leandro Perez

Tôi không có bất kỳ vấn đề bình luận ra dòng đó.
jcisio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.