Mengapa Apache menjalankan banyak proses? RAM berlebihan di sini?

17

Saya perhatikan Apache sedang menjalankan beberapa proses pada server LAMP saya (ubuntu 10.10). Saya hanya menjalankan situs Wordpress dengan MySQL sebagai basis data. Sepertinya www-data menjalankan apache2 lebih dari yang seharusnya (menggunakan terlalu banyak memori juga), apakah saya benar:

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
Trent Scott
sumber
Ini adalah kasus yang sama pada pekerjaan saya sebelumnya juga (CentOS). Saya hanya berasumsi mereka semua proses anak mulai apache untuk setiap permintaan. Kami tidak pernah menghadapi masalah kinerja / memori karena ini meskipun ...
Nandhini Anand
Hmm. Saya hanya khawatir kehabisan memori pada sistem ini karena ini adalah VPS.
Trent Scott

Jawaban:

19

Apache menjalankan banyak proses untuk menyiapkannya saat permintaan klien masuk. Memunculkan proses server lambat, jadi sebaiknya menunggu satu proses untuk klien.

Untuk penggunaan memori, Anda harus memperhitungkan ukuran RES akun (seperti yang ditampilkan di atas), yang merupakan jumlah memori fisik yang digunakan oleh tugas tersebut.

Mengapa Anda pikir Anda memiliki terlalu banyak proses apache2 menggunakan terlalu banyak memori? Apa yang kamu harapkan? Mengapa begitu?

Paweł Brodacki
sumber
Ini pada gambar berbasis Cloud. Sepertinya itu menggunakan lebih banyak memori daripada seharusnya untuk situs sekecil itu. Memori sesungguhnya: 496,36 total MB / 92,02 MB ruang swap gratis: 1024 MB total / 975,93 MB gratis
Trent Scott
1
@Renton: Dengan jawaban pawel yang kedengarannya bagus. Kecuali Anda benar-benar mengalami crash mysql atau sesuatu karena kurangnya memori, Anda harus baik-baik saja. Jika itu terjadi, maka Anda harus mencari konfigurasi apache untuk membatasi proses spawned ini.
Nandhini Anand
2
Linux akan berusaha menjaga sebagian besar memori yang digunakan. Jika tidak ada yang bisa dimasukkan ke dalamnya, itu akan menggunakan RAM untuk cache dan buffer disk. Memori kosong adalah memori yang terbuang (jika Anda tidak kehabisan RAM).
Paweł Brodacki
3

Seperti yang dijelaskan oleh Pawel, apache menggunakan proses per model permintaan dengan kumpulan proses (atau utas per permintaan dengan mpm_worker).

Anda mungkin dapat mengurangi penggunaan memori dengan menggunakan server web berdasarkan IO non-pemblokiran, seperti nginx. Dengan begitu server tidak perlu mendedikasikan proses / utas per koneksi.

janneb
sumber
2

Apache akan menjalankan banyak proses sesuai konfigurasi Anda. Konfigurasi berbeda jika Anda menggunakan modul multi-pemrosesan prefork atau pekerja .

sciurus
sumber