Tại sao Apache chạy quá nhiều quá trình? RAM quá mức ở đây?


17

Tôi nhận thấy Apache đang chạy nhiều tiến trình trên máy chủ LAMP của tôi (ubfox 10.10). Tôi chỉ đang chạy một trang Wordpress với MySQL làm cơ sở dữ liệu. Có vẻ như dữ liệu www đang chạy apache2 nhiều hơn mức cần thiết (sử dụng quá nhiều bộ nhớ), tôi có đúng không:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start

Đây cũng là trường hợp tương tự trong công việc trước đây của tôi (CentOS). Tôi chỉ cho rằng chúng là tất cả các quá trình apache con bắt đầu cho mỗi yêu cầu. Chúng tôi chưa bao giờ phải đối mặt với các vấn đề về hiệu năng / bộ nhớ do điều này ...
Nandhini Anand

Hừm. Tôi chỉ lo lắng về việc hết bộ nhớ trên hệ thống này vì nó là VPS.
Trent Scott

Câu trả lời:


19

Apache đang chạy nhiều quy trình để sẵn sàng cho chúng khi có yêu cầu của khách hàng. Sinh ra một quy trình máy chủ chậm, vì vậy tốt nhất là nên chờ một khách hàng.

Để sử dụng bộ nhớ, bạn nên đưa vào kích thước RES của tài khoản (như được hiển thị ở trên cùng), là dung lượng bộ nhớ vật lý được sử dụng bởi tác vụ.

Tại sao bạn nghĩ rằng bạn có quá nhiều quá trình apache2 sử dụng quá nhiều bộ nhớ? Bạn mong chờ điều gì? Tại sao bạn mong đợi như vậy?


Đây là trên một hình ảnh dựa trên đám mây. Có vẻ như nó sử dụng nhiều bộ nhớ hơn so với một trang web nhỏ như vậy. Bộ nhớ thực: 496,36 MB tổng cộng / 92,02 MB Dung lượng trao đổi miễn phí: Tổng số 1024 MB / 975,93 MB miễn phí
Trent Scott

1
@Trenton: Với câu trả lời của pawel nghe có vẻ tốt. Trừ khi bạn thực sự gặp phải một sự cố mysql hoặc một cái gì đó do thiếu bộ nhớ, bạn sẽ ổn thôi. Nếu nó xảy ra, thì bạn nên tìm cấu hình apache để hạn chế các quá trình sinh sản này.
Nandhini Anand

2
Linux sẽ cố gắng giữ hầu hết bộ nhớ được sử dụng. Nếu không có gì khác để đặt vào nó, nó sẽ sử dụng RAM cho bộ đệm và bộ đệm. Bộ nhớ trống bị lãng phí bộ nhớ (nếu bạn không hết RAM).
Paweł Brodacki

3

Như câu trả lời của Pawel giải thích, apache sử dụng mô hình quy trình cho mỗi yêu cầu với nhóm quy trình (hoặc luồng trên mỗi yêu cầu với mpm_worker).

Bạn có thể giảm mức sử dụng bộ nhớ bằng cách sử dụng máy chủ web dựa trên IO không chặn, chẳng hạn như nginx. Bằng cách đó, máy chủ không cần phải dành một quy trình / luồng cho mỗi kết nối.


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.