Apache 2 Bellek Kullanımını Sınırla


9

Debian PPC Squeeze 2.6.30 çalıştıran eski bir Blue & White G3 / 300'den hobi web sunucusu çalıştırıyorum. Performans, yeniden başlatmadan sonra bir süre için iyi, ancak sonunda gittikçe azalıyor. Şu anda 76 günlük çalışma süresinde ve ana suçlu, 10'dan fazla apache2 işleminin bellek kullanımı gibi görünüyor.

Ben değerlerini düşürmek gerek StartServers, MinSpareServersve / veya MaxSpareServers, ama emin ayarlamak için hangi biri değilim ve her hangi mpm modülü kullanılıyor bağlı üç bölüm bulunur.

Aşağıdaki bölümlerden hangisini değiştirmem gerektiğini ve kutunun 448 MB fiziksel belleğe sahip olduğu göz önüne alındığında makul değerlerin neler olduğunu nasıl anlarım (her 64, 128 ve 256 çubuktan birinin garip yükseltme geçmişi)?

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Apache2.conf dosyamda başka StartServers örneği yok, ancak bu mpm modüllerinin hiçbiri mods-availableveya öğesinde görünmüyor mods-enabled. Fikirler?

Teşekkürler!


Kutunuzun belleği azaldığı varsayımına girdim (ve berbat performansınızın yoğun bir şekilde değişmesinden kaynaklanıyor). Eğer takas etmiyorsanız daha fazla bilgi için sizi
rahatsız edeceğim

Yanıtlar:


6

400MB bu günlerde bir web sunucusu için fazla bir şey değil - kutuyu değiştirmeyi düşünebilirsiniz :)

Bununla birlikte, bellek kullanımınız balonlanıyorsa, muhtemelen bir yerde bellek sızıntısı vardır - hızlı bir test için şimdi httpd işlemlerinin boyutuna bakın, sonra Apache'yi durdurun / başlatın ve çok daha küçük olup olmadığını görün. Birkaç gün onları izliyorlarsa ve büyüyüp büyümediklerine bakın.

Bir bellek sızıntısı varsa, bunun için gerçek çözüm bellek sızıntısını bulmak ve düzeltmektir, ancak bu genellikle kıçta bir ağrı MaxRequestsPerChildolduğundan 0 (sınırsız) dışında bir şeye de ayarlayabilirsiniz . Bu, sabit sayıda istekte bulunduklarında Apache çalışanlarını öldürecek (süreçte sızan hafızasından vazgeçmeye zorlayacaktır).

Daha büyük değerlerle başlayın (binlerce veya daha fazla) ve yüzlerce kişiye kadar inin. Çocuk başına 100 isteğin altında kalırsanız, bellek sızıntısı, sürekli öldürmek ve apache çalışanlarını yeniden yaratmanın getirdiği performans önemli olacağından, bunu düzeltmeyi garanti edecek kadar büyüktür .


Re: hangi mpm ayarlamak, cevap neredeyse kesinlikle prefork.
Kesinlikle size söyleyecek çizgiyi çalıştırabilir httpd -Vve arayabilirsiniz Server MPM:.


1
-V bana ihtiyacım olan prefork bilgilerini verdi (benim durumumda apache2 -V olmasına rağmen). Teşekkürler!
UltraNurd

Hile yapmış gibi görünüyor. Ben çok fazla çocuk sunucu (her biri yaklaşık 80 MB kapma) çünkü çünkü fiziksel bellek tükenme ve takas olduğunu düşünüyorum. Ve evet, biliyorum, sunucu eski. Ancak herhangi bir talebi neredeyse hiç yerine getirmiyor: oD.
UltraNurd

1
Çok fazla istek almıyorsanız, Başlangıç ​​ve Yedek sunucu sayılarını orijinal postanızda belirttiğiniz gibi kırpabilirsiniz (geliştirme sistemlerinde RAM kullanımını azaltmak için hepsini 2 ile 5 arasında bir şeye ayarladım)
voretaq7

Ben min ve max yedekleri 5 ve 10 3 ve 6 bırakarak sona erdi ve bu şeyler takas önlemek için yeterli RAM kalan gibi görünüyor. Teşekkürler!
UltraNurd

1

Apache sürecinin bellek kullanımını azaltmak için MaxClients'ı ayarlamak isteyeceksiniz.

Genel kural: (İstenen Maksimum Bellek) / (1 Apache İşleminin Bellek Kullanımı) = # Maks İstemci

Sonunda da MaxSpareServers <= Max Client olacak şekilde ayarlamanız gerekir .

Bir işlemin bellek kullanımı, yüklediğiniz modüllere (php vb.) Büyük ölçüde bağlıdır, bu nedenle Maks İstemcileri biraz daha düşük ayarlamak isteyebilirsiniz.

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.