Apache istikrarsızlık düzeltmek için?

4 Cevap php

Ben Debian üzerinde basit bir LAMP yığınını yapılandırmış ve Apache web sunucusu ile bazı sorunlar yaşıyorum.

Her 3-4 saat web sunucusu bir kilitlenme ve veritabanı blok vurmak tüm istekleri giriyor. Sunucu her istek için yeni bir çocuk yaratıyor. Süreçlerinin sayısı, çok hızlı bir şekilde artar. Birkaç saniye Monit bildirimler şey yanlış ve Apache sunucusunu yeniden başlatıldıktan sonra.

Ben sunucu hala statik içerik isteklerini yanıtlamak mümkün değildir, çünkü bu sorun PHP veritabanı bağlantı havuzu işleme yoluyla oluşturulur şüpheli. Eğer bu tür davranış yaşadınız mı? Ne yapmaya çalışmalısınız?

Update: Sorun çözüldü. Bu opcode önbelleğe alma ve kullanıcı verileri için APC kullanmak için kötü bir fikir gibi görünüyor. Ben şimdi sadece kod için kullanıcı verilerini ve APC depolamak için Memcache kullanıyorum. Ben hala zaman zaman bazı segmentasyon hataları olsun ama sunucu kararlı çoğu zaman.

4 Cevap

Ben sorunları olduğunu şüpheli olur:

  • Zor bir uzun süren bir veritabanı sorgu hangi blok daha istekleri. Eğer yalnızca tablo düzeyinde kilitleme ve okuyucuların kolayca yazarları ve tersi, o kadar tek bir zor sorgu engelleyebilirsiniz olan MySQL MyISAM motorunu kullanarak eğer bu oldukça kolay bir kullanıcı tablo, hemen hemen tüm sunucu süre engelleyebilirsiniz söylüyor veritabanı I / O bekler Genellikle "SHOW PROCESSLIST" ya da bunu sizin için yapacak bir aracı kullanarak bu teşhis edebilir.
  • Bir prefork sunucuda kullanılabilir RAM için çok çok yüksek MaxClients ayarlanmış olması - hemen hemen herkes bunu yapar. Eğer bir "şişman" prefork Apache (örn işlem PHP ile) kullanıyorsanız, o zaman için yeterli ram var daha yüksek MaxClients koymayın. Bu muhtemelen 100 veya 150 tipik değerlerinden çok daha azdır.

Bu iki şey size görüyorsanız sorunu neden anlaşmak. Her ikisi de, tek başına sorunlara neden olabilir olarak sabit olması gerekmektedir.

Bu tamamen tahmin ve deneyime dayanmaktadır.

Neden günlükleri bir göz yok mu? /var/log/apache2/* başlamak için iyi bir yerdir. Ne sunucu ölür hemen önce talep edilir? Orada itibaren, muhtemelen yanlış neler çıkarabiliriz. Php scriptler varsayılan olarak 30 saniye sonra sona erer gibi, hata böyle bir şey neden oldukça büyük olması gerekir.

Zamanaşımı yüksek ayarlandığında / etc/apache2/apache2.conf de, ben benzer sorunları gördük ve sistem düştü bağlantıları bir grup ile çarpınca sizin zaman aşımı ayarlarını kontrol edin.

Mysql-yavaş günlüğü de yavaş problem neden sorguları bulmak için yararlıdır.