Korkunç 256 maksimum bağlantıya bastıktan sonra ne yapılmalı Apache Limit


9

Sunucu kaynakları iyi olmasına rağmen sitemin neden bu kadar yavaş yanıt verdiğini anlamaya çalışırken başımı kaşıdıktan sonra, Apache durumunu kontrol ettim ve buldum:

78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers

Apache'm tam anlamıyla bağlantılar ile maksimum görünüyor. Sitemi ziyaret etmeye çalışan herkes Apache tekrar özgür olana kadar bir "bekleme listesine" alınır.

İki seçeneğim var gibi görünüyor.

A) Maks. Bağlantı sınırını 256'nın üzerine çıkartın . Bu makaleye göre o kadar kolay olmasa da:

Varsayılan olarak, MaxClients parametresinin 256 katı sınırında derlenmiş olması gerekir. Ancak bu, Apache yeniden derlenerek değiştirilebilir. Bazı dağıtımlar veya barındırma şirketleri, büyük yüklerle başa çıkmak için bu sınırı 512 veya 1024 gibi çok yüksek bir değere yükseltir.

B) Çok fazla zaman alan komut dosyalarını bulun. Çoğu apache işlemi göründüğü ve sonra tekrar kaybolduğu için bu benim için çok daha zor görünüyor. Ayrıca, sitelerim PHP komut dosyaları oldukça iyi optimize edilmiştir ... ve bir kez daha, sunucu kaynakları gayet iyi:

Server load 2.69 (8 CPUs)   
Memory Used 25.33% (2,039,108 of 8,048,804) 
Swap Used   1.32% (54,156 of 4,095,992)

Hangi seçeneği (bunlardan herhangi biri varsa) seçmeliyim ve nasıl yapmalıyım?

DÜZENLE

Daha fazla bilgi: Sunucu Sürümü: Apache / 2.2.23 (Unix) mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635

HTTP Conf: http://pastebin.com/yBeLt6mP

Parital Request örneği: http://pastebin.com/vzUVDMPR

Yapıştırma kutuları garip görünüyorsa Metin Sarmayı aç / kapat.


Alıntı yaptığınız makale ~ 6 yaşında. Yazılım değişiklikleri. Bkz. Shane'nin Cevabı.
Chris S

1
@ChrisS Daha da güncel değil - derlenen sınır 1.x bir şeydi (2.0 2002'de çıktı) ve makale açıkça 2.0 belgelere bağlanıyor.
Shane Madden

Yanıtlar:


10

Bu makale yanlış; MaxClientsprefork MPM (şu anda sorun açıklamanıza göre kullandığınızı varsayıyorum) kullanırken 256'nın üzerine yükseltilebilir. Gönderen belgeler :

İş parçacığı olmayan sunucular (ör. Prefork) için, MaxClientsistekleri sunmak üzere başlatılacak en fazla alt işlem sayısı anlamına gelir. Varsayılan değer 256'dır; artırmak için de yükseltmelisin ServerLimit.

ServerLimitzor derlenmiş limiti olan, ancak sunucunuz başka bir darboğaz içine girmeden ulaşmanız gereken yol geçmiş. Dokümantasyon :

ServerLimit 20000Sunucuya derlenmiş zor bir sınırlama vardır (prefork MPM 200000 için). Bu, yazım hatalarının neden olduğu kötü etkilerden kaçınmayı amaçlamaktadır.

Yani, müşteri limitinizi 512 gibi bir şeye yükseltmek istiyorsanız, o zaman:

MaxClients 512
ServerLimit 512

Prefork dışındaki MPM'ler ölçek için daha iyi olduğu için hangi MPM'yi kullandığınıza da bakmalısınız. Daha fazla bilgi için buraya bakın .


Core.c ve worker.c çalışmalarını görüyorum httpd -l. Sanırım bu işçi MPM'si çalıştırıyor muyum?
kmoney12

Nitekim @hellohellosharp - bu durumda, potansiyel senin ayarlamak isteyeceksiniz MaxClients, ServerLimit, ThreadsPerChild, ve ThreadLimit. Mevcut çalışan yapılandırmanızı şu adresten sağlayabilir misiniz httpd.conf?
Shane Madden

Evet ... Bunu herkese açık olarak yayınlama tehlikesi var mı? Umarım hayır, işte burada: pastebin.com/yBeLt6mP
kmoney12

Hayır, httpd.conf dosyalarının çoğunu gönderme konusunda sorun yok. Sadece şifreler / kullanıcı adları / vb. Gibi garip bir şey olmadığından emin olun. Bunlar bazen proxy yapılandırma bölümlerinde ve benzerlerinde de sürünür. Birçok kişi IP ve Alan adlarını da düzenlemeyi sever, bu yüzden dikkat çekmezler
Chris S

1
durum modülü size bu ayrıntıları gösterebilir.
ETL

-1

Ters bir proxy kullanmanızı öneririm, nginx veya lighttpd gibi bir şey apache'den çok daha fazla bağlantı işleyebilir. Sitelerinizin htaccess'i nasıl kullandığına bağlı olarak, nginx / lighttpd'yi fcgi ve forego apache ile de kullanabilirsiniz.


4
Gerçekten mi?? İki konfigürasyon satırı eklemesi gerekiyor httpd.confve çözümünüz, çalıştırdığı yazılımın çoğunu söküp değiştirmek mi ?! Her yazılım parçasının sorunları vardır, ancak eğitimsiz yanlış kullanım daha kötü sorunlara neden olur.
Chris S

Sonuçta nginx daha aktif bağlantılarla başa çıkabilir, ne kullanılacağına karar vermek OP'ye kadar, sadece önerimi öne sürüyordum.
Shoshomiga
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.