Chúng tôi đang điều hành một trang web Drupal hạng nặng thực hiện mô hình tài chính. Chúng ta dường như đang gặp phải một số rò rỉ bộ nhớ do thực tế là bộ nhớ ngoài giờ được sử dụng bởi apache tăng lên trong khi số lượng quá trình apache vẫn ổn định:
Chúng tôi biết vấn đề bộ nhớ đến từ apache / PHP bởi vì bất cứ khi nào chúng tôi phát hành /etc/init.d/httpd reload
việc sử dụng bộ nhớ đều giảm (xem ảnh chụp màn hình ở trên và bên dưới đầu ra CLI):
Trước khi tải lại httpd
$ miễn phí tổng số bộ đệm chia sẻ miễn phí được sử dụng lưu trữ Mem: 49447692 45926468 3521224 0 191100 22609728 - / + bộ đệm / bộ đệm: 23125640 26322052 Hoán đổi: 2097144 536552 1560592
Sau khi tải lại httpd
$ miễn phí tổng số bộ đệm chia sẻ miễn phí được sử dụng lưu trữ Mem: 49447692 28905752 20541940 0 191360 22598428 - / + bộ đệm / bộ đệm: 6115964 43331728 Hoán đổi: 2097144 536552 1560592
Mỗi luồng apache được gán cho PHP memory_limit
là 512 MB, điều này giải thích việc sử dụng bộ nhớ cao biểu thị khối lượng yêu cầu thấp và max_execution_time
120 giây sẽ chấm dứt các luồng thực thi mất nhiều thời gian hơn và do đó sẽ ngăn chặn sự tăng trưởng liên tục trong việc sử dụng bộ nhớ nhìn thấy
Q: Làm thế nào chúng ta có thể điều tra những gì gây ra rò rỉ bộ nhớ này?
Lý tưởng nhất là tôi đang tìm kiếm các bước khắc phục sự cố tôi có thể thực hiện trên hệ thống mà không phải làm phiền nhóm phát triển.
Thông tin bổ sung:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
FYI chúng tôi nhận thức được vấn đề hoán đổi mà chúng tôi đang điều tra riêng và không liên quan gì đến rò rỉ bộ nhớ mà chúng tôi đã quan sát trước khi việc hoán đổi bắt đầu xảy ra.
memcached
thư viện PHP . Dựa trên trang quản trị memcache memcache.php
, tất cả những gì chúng ta có thể thấy là chúng ta đã phân bổ 5GB
cho memcache, trong đó 3.3GB
đang được sử dụng. Sẽ là tuyệt vời nếu bạn có thể giúp chúng tôi thêm ở đây.
memcached
daemon có lẽ là tốt. Đó là thư viện memcache PHP có thể hoặc không thể rò rỉ bộ nhớ (và do đó phát triển việc sử dụng bộ nhớ của Apache). Vấn đề của tôi là khoảng 1-2 năm trước, vì vậy mọi thứ có thể đã được khắc phục sau đó. Dù sao, nếu memcached không bắt buộc đối với bạn, hãy thử tắt nó trong một thời gian và xem liệu việc sử dụng bộ nhớ Apache có còn phát triển không.
httpd
, việc sử dụng bộ nhớ sẽ tiếp tục phát triển và hộp cuối cùng gặp sự cố với một số thông báo trong bộ nhớ kernel. Hiệu suất là tốt (cho đến khi việc sử dụng bộ nhớ đạt đến giới hạn bộ nhớ). Hãy bỏ qua vấn đề trao đổi.