sleep () sessizce domuz CPU

3 Cevap php

Ben VMWare içinde Linux üzerinde Apache koşuyorum. Ben talep ediyorum PHP sayfaları biri) (bir uyku yapar, ve ben (uyku için bekleyen) 'ing, ikinci sayfa takılırsa, () den ben ilk sayfada iken ikinci bir sayfa istemek için çalışırsanız uyku olduğunu bulmak bitirmek için ilk sayfa.

Başkasının bu davranışı gördü? PHP multi-threaded olmadığını biliyorum, ama bu CPU brüt yanlış ele gibi görünüyor.

Düzenleme: Ben CPU kullanımı başak vermediğinden söz etmeliydim. Ne CPU "hogging" demek başka bir PHP sayfası sayfa () 'ing uyku iken CPU kullanmak mümkün görünüyor olmasıdır.

3 Cevap

Denilen sayfaları bir oturum açın ve sonra taahhüt yok, bu durumda bir çözüm için this answer görmek olabilir.

Ne bu muhtemelen demektir Apache sadece 1 çocuk işlemini kullanıyor olmasıdır.

Bu yüzden:

1 Çocuk süreç bir isteği işleyen (uyku bu durumda ama gerçek işler yapıyor olabilir, Apache farkı söyleyemem), böylece yeni bir istek geldiğinde, bu ilk işlem bitene kadar beklemek zorunda kalacaklar.

Çözelti Apache (Eğer prefork MPM kullanıyorsanız MaxClients direktifi) yumurtlamak için izin süreçlerinin çocuk sayısını artırmak olacaktır, sadece PHP script () uyku çıkarın.

) (Tam olarak komut neler oluyor bilmeden söylemek zor, ama muhtemelen uyku kurtulabilirsiniz.

Aslında CPU% 100 gidin görme ya da sadece başka sayfalar servis ediliyor musunuz? Kaç apache-örnekleri runnning vardır? Eğer uyku çalıştırdığınızda tüm ipliklerin içinde) (duruyoruz?

PHP'nin uyku () fonksiyonu aslında n saniye için bir atıl döngü geçiyor. Herhangi belleği serbest bırakmıyor, ama önemli ölçüde CPU yükünü artırır olmamalıdır.