2013-11-28 11 views
8

Kaynakların HTTP istekleri rastgele olarak - yaklaşık% 1-5'i (kaynak başına, sayfa başına değil) - tarayıcıya gönderilmesi çok uzun sürer (~ 20 saniye), nadiren bile nadiren asılı değil. (Sunucu detayları aşağıda listelenmiştir).Apache - kaynaklar rasgele asılır (yavaş sayfa yüklemeleriyle sonuçlanır)

Bu, herhangi bir sayfanın her 5. isteğinin, <head> etiketi içinde asılı bir JavaScript kaynağı nedeniyle askıda kalıyor gibi görünmesini sağlar.

Kaynaklar css, js ve küçük resim dosyalarıdır, doğrudan apache tarafından sunulur (kodlama dili yoktur), ancak sayfa yükleri (PHP veya Rails dahil) aynı zamanda nadiren askıda kalır, diğer kaynaklarla eşittir (1-5%) zaman), bu bir Apache İsteği ile ilgili sorun gibi görünüyor.

ek bilgiler:

  • Ben server-status boşta işçileri kontrol ettim ve beklendiği gibi, hala boşta işçilerin% 98 var. Her ne kadar bu durum alakalı olabilirse de, bu etiketler FastCGI tarafından sunulmayan statik kaynaklara uygulanır (kaynaklar statiktir).
  • Bu sorunu yaşayan tek kişi ben değilim. Başka biri de aynı sorunu yaşıyor ve farklı bir IP adresinden.
  • Bu, hem Google Chrome hem de Firefox'ta HTTP istemcileri olarak gerçekleşir.
  • Aynı JS dosyasını yeni bir sekmede yenilemeye zorladım. Sonunda aynı türden bir asmaya yol açtı.
  • Google Chrome için Zamanlama sekmesi, bekleyen askıya alma isteklerinden biri için 34 ms bekleme bekler ve 19.27s. Apache, dosya içeriğinin hazır halde teslim edilmesine neden oldu mu, sadece mantıklı bir sürede teslim etmede sorun mu vardı?
  • hata.log hataları hiçbir hata belirtmemektedir. Error.log içinde beklenen 404 ve 500 hata var, ancak bunlar asma ile ilgili değil; bunlar varolmayan sayfalar ve PHP ölümcül hataları için gerçek hatalardır.
  • Çoğunlukla statik içerik için bazı şüpheli 206 Kısmi İçerik yanıtları alıyorum. Çoğunlukla her yerde 200 OK yanıtı alıyorum ve apache access.log dosyasında 200 Tamam olarak bildirilen belirsiz asılı kaynakları onaylayabilirim.
  • Redmine için mod_passenger yüklü var. Bu yardımcı olur mu bilmiyorum, ama şüphesiz bu sunucu birlikte çalıştığım diğer tüm sunucuların aksine yüklü var. Mod_passenger, statik içeriği etkilememesine rağmen, özellikle ruby ​​olmayan bir proje klasöründe olmamalıdır.
  • Sunucu, Digital Ocean'da barındırılan Ubuntu 13.10 üzerinde Apache 2.4 Olay MPM'sini kullanıyor.

Bu asmalara neden olabilir ve bunu nasıl düzeltebilirim?

+0

Bunun dibine hiç ulaşabildiniz mi? Benzer bir problemim var, sanırım If-None_match ve If-Modified-bence düşündüğümden beri. FireFox'da zorla sayfa yenilemesi yaptığımda ve ne olup bittiğini izlemek için HttpFox'u kullandığımda Apache 2'ye rağmen bu sayfa bileşenlerinin çok yavaş olduğunu görebiliyorum.4 aynı kutuda (win7x64) tarayıcım var. Senin için tarayıcım önemli değil. Ve ben sadece sayfaya göz atsam iyi olur. Test için zorunlu bir sayfa yenilemesi yaptığım zaman. –

+0

Hala dibine ulaşmadım. Kaynaklar söylediğim gibi benim için yavaş yavaş yüklenir. Herhangi bir http isteğinin anında% 95'inin geçtiği ve% 5'inin gerçekten uzun bir süre veya sonsuza kadar askıda kaldığı. Benimki gibi önbellek başlıkları ile ilgili olduğunu sanmıyorum, çünkü önbelleğe alma özelliği devre dışı bırakılmış Chrome Geliştirici araçlarını kullanıyordum, yani bu başlıkları gönderemedim. –

+0

Bunu duyduğuma üzüldüm. Birgün Apache kaynak koduna girmeyi ve neler olup bittiğini çözmeyi umuyorum, ama bu çok büyük bir proje. Sana iyi şanslar. Ve teşekkürler. –

cevap

0

Aynı problemi yaşadım, bu yüzden bu thread'u okuduktan sonra KeepAlive Off ayarını apache yapılandırmamda denedim.

Harika bir "düzeltme" değil, ama en azından nedenini bulmak için bir adım daha yaklaşıyorum ve sayfalar, ortalama saatte tam olarak yüklenmek için 15'leri almıyor.