Tôi biết phương pháp lấy bộ nhớ trung bình được sử dụng bởi mỗi quy trình apache2 bằng ps. Tôi đã quan sát nó và nó sẽ có dung lượng khoảng 18 MB (Mặc dù nó dường như đã tăng vọt trong 2 ngày qua từ 18 MB trung bình lên 25 MB).
Máy chủ của chúng tôi đang phục vụ API chấp nhận một số dữ liệu và lưu trữ dữ liệu đó trong cơ sở dữ liệu mysql. Api được viết bằng PHP. Tôi đã sử dụng các hàm mem_get_usage và mem_get_peak_usage của PHP để hiểu mức sử dụng bộ nhớ nhưng chúng không ở mức gần 18 MB.. (hầu hết hiển thị dưới 1 MB)
Vì vậy, tôi không hiểu điều gì đang tiêu tốn bộ nhớ khổng lồ này cho mỗi quy trình apache. Điều này đã trở thành một nút cổ chai vì tổng RAM của chúng tôi bị hạn chế và với mức tiêu thụ này, chúng tôi buộc phải hạn chế maxrequestworkers, điều này gây ra sự chậm trễ trong việc phục vụ khách hàng khi có lưu lượng truy cập cao.
Đầu ra điển hình từ ps:
dữ liệu www 30024 0,0 0,3 494384 26124 ? 04:27 0:03 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30077 0,0 0,3 494368 26136 ? 04:28 0:04 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30078 0,4 0,3 494360 25960 ? S 04:28 0:21 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30080 0,1 0,3 494376 26140 ? 04:28 0:05 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30115 0,2 0,3 494448 26180 ? 04:28 0:11 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30124 0,1 0,3 494376 26212 ? 04:28 0:07 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30132 0,0 0,3 494376 26108 ? 04:28 0:03 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30135 0,0 0,3 494376 26164 ? 04:28 0:04 /usr/sbin/apache2 -k bắt đầu
dữ liệu www 30219 0,0 0,3 494352 26108 ? 04:29 0:03 /usr/sbin/apache2 -k bắt đầu
Bạn có đề xuất nào về cách theo dõi mức sử dụng bộ nhớ trên mỗi quy trình apache2 và cách giảm/tối ưu hóa nó không?