Apache neden bu kadar çok işlem yapıyor? Burada aşırı RAM mi var?


17

Apache'nin LAMP sunucumda birden fazla işlem yürüttüğünü fark ettim (ubuntu 10.10). Ben sadece bir veritabanı olarak MySQL ile bir Wordpress sitesi çalıştırıyorum. Görünüşe göre www-data (çok fazla bellek kullanarak) olması gerekenden daha fazla apache2 çalıştırıyor, doğru mu?

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

Bu benim önceki işimde de aynı durumdu (CentOS). Ben sadece ... hepsi çocuk her request.We için apache başlar nedeniyle bu olsa performans / bellek sorunlarını karşı karşıya asla işler zannettim
Nandhini Anand

Hmm. Sadece bir VPS olduğu için bu sistemde hafızanın tükenmesinden endişe ediyorum.
Trent Scott

Yanıtlar:


19

Apache, bir istemci isteği geldiğinde onları hazır hale getirmek için birden fazla işlem yürütüyor. Bir sunucu işlemi oluşturmak yavaştır, bu nedenle bir istemciyi beklemek en iyisidir.

Bellek kullanımı için, görev tarafından kullanılan fiziksel bellek miktarı olan RES boyutunu (üstte gösterildiği gibi) dikkate almalısınız.

Neden çok fazla bellek kullanan çok fazla apache2 işleminiz olduğunu düşünüyorsunuz? Ne bekliyorsunuz? Neden böyle düşünüyorsun?


Bu, Bulut tabanlı bir görüntü üzerinde. Bu kadar küçük bir site için olması gerekenden daha fazla bellek kullanıyor gibi görünüyor. Gerçek hafıza: 496.36 MB toplam / 92.02 MB boş Takas alanı: 1024 MB toplam / 975.93 MB ücretsiz
Trent Scott

1
@Trenton: Piyonun cevabı kulağa hoş geliyor. Aslında bir mysql çökmesi ya da bellek eksikliği nedeniyle bir şeyle karşılaşmadıkça, iyi olmalısınız. Böyle bir durumda, bu ortaya çıkan işlemleri sınırlamak için apache yapılandırmalarını aramalısınız.
Nandhini Anand

2
Linux kullanılan belleğin çoğunu tutmaya çalışacaktır. İçine koymak için başka bir şey yoksa, önbellek ve disk arabellekleri için RAM kullanır. Boş bellek boşa harcanır (RAM'iniz bitmiyorsa).
Paweł Brodacki

3

Pawel'in cevabının açıkladığı gibi, apache, istek havuzu başına bir işlem havuzuyla (veya mpm_worker ile istek başına iş parçacığı) bir işlem kullanır.

Nginx gibi engellenmeyen G / Ç'ye dayalı bir web sunucusu kullanarak bellek kullanımını azaltabilirsiniz. Bu şekilde, sunucunun bağlantı başına bir işlem / iş parçacığı ayırması gerekmez.


2

Apache, yapılandırdığınız kadar işlem gerçekleştirir. Prefork veya çalışan çoklu işleme modüllerini kullanıyorsanız yapılandırma farklıdır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.