Quá trình httpd Apache của Apache, sử dụng tất cả bộ nhớ máy chủ của tôi


9

Ví dụ ec2 nhỏ của tôi với bộ nhớ 1,7 GB, chạy Amazon AMI dựa trên CentOS, có vấn đề với việc Apache sử dụng quá nhiều bộ nhớ so với bình thường. Nếu bạn nhìn vào ảnh chụp màn hình, mức sử dụng bộ nhớ sẽ ở mức 90 - 100% cho đến khi tôi khởi động lại dịch vụ httpd, nơi nó sẽ bắt đầu lại, tăng tỷ lệ trở lại lên tới hơn 90%.

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

Tôi thực sự sẽ đánh giá cao một số hỗ trợ về cách xác định vấn đề. Đây có lẽ là hành vi apache "bình thường", để sử dụng tất cả bộ nhớ có sẵn? Hoặc có một rò rỉ có thể tôi phải săn lùng. Hiện tại tôi hơi bối rối về những gì có thể xảy ra.

Chúng tôi đang sử dụng prefork Apache MPM và không có sql hay bất cứ thứ gì tương tự - chỉ là apache. Trang web ở đây .


1
Dường như không sử dụng bất kỳ Hoán đổi nào, vậy vấn đề là gì?
HTTP500

Không phải thực tế là việc sử dụng quá nhiều bộ nhớ có phải là một mối quan tâm không? Xin lỗi kinh nghiệm người mới của tôi, tôi đoán đó có thể là một giả định không chính xác. Có lẽ đó là hành vi bình thường và Apache được thiết kế để sử dụng tất cả bộ nhớ mà nó có thể lấy, mặc dù là một trang web có lưu lượng truy cập thấp?
Amivit

1
Tôi nhận thấy rằng bạn đang sử dụng NewRelic, cũng có thể ghi lại thời gian dành cho apache (có thể hữu ích) nếu bạn thêm dòng này vào httpd conf: RequestHeader set X-Request-Start "%t"nếu bạn chưa có. Điều này sẽ xuất hiện dưới dạng "Yêu cầu xếp hàng" khi bạn truy cập Máy chủ ứng dụng> Tổng quan - có thể giúp bạn đi đến tận cùng của vấn đề.
KM.

Câu trả lời:


8

Như HTTP500 đã nói, có lẽ bạn không nên lo lắng về điều đó trừ khi máy thực sự bị nghẹt thở. Hãy xem Trợ giúp! Linux đã ăn RAM của tôi! . Đây không phải là một tình huống tương tự, vì bạn có các quy trình thay vì bộ đệm sử dụng hết RAM, nhưng nó không quá xa: RAM vật lý của máy bạn là tài nguyên được sử dụng, với bộ đệm kernel hoặc quy trình công nhân Apache dự phòng để xử lý kịp thời yêu cầu. Nếu bạn không sử dụng RAM, bạn đã trả quá cao cho kích thước hộp của mình.

Dù sao, nếu bạn muốn chơi với các cài đặt MPM, tài liệu Apache là http://httpd.apache.org/docs/civerse/mod/prefork.html

Bạn có thể có thể giảm MinSpareServers, StartServers, v.v., như bạn đã nói rằng trang web có lưu lượng truy cập thấp. Sau đó, bạn sẽ có thêm RAM miễn phí để được sử dụng bởi bộ đệm kernel cho mục đích bất chính của họ.


4

linux sử dụng tất cả bộ nhớ của bạn là bình thường, bộ nhớ không được sử dụng nếu không được sử dụng lại dưới dạng bộ đệm đĩa. xem: linux đã ăn ram của tôi

Bạn có thể xác minh điều này bằng cách nhìn vào đầu ra free -mvà mong đợi để thấy một cái gì đó như thế này:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

dòng +/- bộ đệm / bộ đệm là cái bạn muốn. Nó bổ sung ram lưu trữ miễn phí để cung cấp cho bạn hình ảnh rõ hơn về dung lượng bộ nhớ thực sự có sẵn. Trong trường hợp này, Bạn muốn chú ý đến số 3416 chứ không phải 101.

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.