Apache “httpd” işlemi, tüm sunucularımın belleğini kullanıyor


9

CentOS tabanlı Amazon AMI çalıştıran 1.7 GB belleğe sahip küçük ec2 bulut sunucumda Apache'nin olması gerekenden çok fazla bellek kullanma sorunu var. Ekran görüntüsüne bir göz atarsanız, httpd hizmetini yeniden başlatana kadar bellek kullanımı% 90-100 arasında olacaktır, burada yeniden başlayacak ve yolunu% 90'dan fazla artıracaktır.

resim açıklamasını buraya girin

Sorunun nasıl tespit edileceği konusunda bazı yardımları gerçekten takdir ediyorum. Bu, kullanılabilir tüm belleği kullanmak için belki de "normal" apache davranışı mıdır? Yoksa avlamam gereken olası bir sızıntı var mı? Şu anda neler olup bittiği konusunda biraz şaşırdım.

Apache MPM prefork kullanıyoruz ve sql veya benzeri bir şey yok - sadece apache. Web sitesi burada .


1
Herhangi bir Takas kullanmıyor gibi görünüyor, sorun ne?
HTTP500

Bu kadar çok bellek kullanması bir endişe kaynağı olmamalı mı? Acemi deneyimimi özür dilerim, sanırım yanlış bir varsayım olabilir. Belki normal bir davranıştır ve Apache düşük trafikli bir web sitesi olmasına rağmen alabileceği tüm belleği kullanmak üzere tasarlanmıştır.
Amivit

1
Bu satırı httpd conf'inize eklerseniz apache'de harcanan zamanı da kaydedebilir (yardımcı olabilir) NewRelic kullandığınızı fark ettim: RequestHeader set X-Request-Start "%t"Henüz yapmadıysanız. Uygulama Sunucusu> Genel Bakış'a gittiğinizde bu, "İstek Kuyruğu" olarak görünür - sorunun en altına inmenize yardımcı olabilir.
KM.

Yanıtlar:


8

HTTP500'ün dediği gibi, makine boğulmadığı sürece muhtemelen endişelenmemelisiniz. Yardım'a bir göz atın ! Linux RAM'imi Yediler! . RAM'i kullanan arabelleklerden ziyade süreçleriniz olduğu için oldukça benzer bir durum değil, ancak çok uzakta değil: makinenizin fiziksel RAM'i, hemen gelen aramaları işlemek için çekirdek tamponları veya yedek Apache çalışan süreçleri ile kullanılacak bir kaynaktır istekleri. RAM kullanmıyorsanız, kutunuzun boyutu için fazla ödeme yaptınız.

Her neyse, MPM ayarlarıyla oynamak istiyorsanız, Apache belgeleri http://httpd.apache.org/docs/current/mod/prefork.html

Sitenin düşük trafikte olduğunu belirttiğiniz gibi MinSpareServers, StartServers, vb. Daha sonra, kötü amaçlı kullanımları için çekirdek arabellekleri tarafından tüketilecek daha fazla boş RAM'e sahip olacaksınız.


4

tüm belleğinizi kullanan linux normaldir, aksi halde kullanılmayan bellek disk önbelleği olarak yeniden kullanılır. bkz: linux koçumu yedi

Bunun çıktısına bakarak bunu doğrulayabilir free -mve böyle bir şey görmeyi bekleyebilirsiniz:

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

+/- arabellekleri / önbellek satırı istediğiniz satırdır. Gerçekten ne kadar bellek bulunduğuna dair daha iyi bir resim elde etmek için önbelleğe alınmış koç ekler. Bu durumda, 101'e değil, 3416 numarasına dikkat etmek istiyorsunuz.

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.