2012-09-07 23 views
6

Son birkaç gündür yeni başladığım mevcut üretim sunucumda bir sorun yaşıyorum. Ben mod_jk v1.3 ile bağlı apache httpd-2.2.3 ve tomcat-5.5.20 çalıştırıyorum ve tomcat üzerinde barındırılan bir Spring MVC sitesi var. Neler oluyor, web sitesi yaklaşık 12 saat sonra kullanıcılarımıza takılıyor. bu ilk bu kadar baktıktan sonra ben catalina.outmod_jk tomcat ile bağlantıyı kaybediyor

WARN [org.apache.jk.core.MsgContext] Error sending end packet 
java.net.SocketException: Broken pipe 

aşağıdaki hatalardan birkaç görebiliyordu olduğu zaman bu o tamamlamıştı önce bir kullanıcı bir istek iptal olduğunu anlamına geldiğini anlamak için geldi ve böylece dönüş Yol kapatıldı, böylece veriler geri dönemedi. Web'de aramadan, bu, iş parçacığının zaman aşımına ulaşana kadar tomcat'te açık kalmasına neden olabilir. Ben catalina.out günlüğün sonunda geldiğinden beri erkek kedi

All threads (200) are currently busy, waiting. Increase maxThreads (200) or check the servlet status 

düştü, bu öneri apache httpd.conf içinde JkModule ayarlarında aşağıdaki değişiklik yapmaktı mantıklı görünüyordu

JkOptions +DisableReuse 

Sitemize herhangi bir yan etkiye neden olmadığından emin olduktan sonra bunu yaptım ve ertesi gün işe yaramadı ama dün aynı belirtiler donmuş olan web sitesiyle ortaya çıktı. Ancak bu sefer catalina.da hiç hata olmadı, sadece tomcat'e istek almayı bıraktık. o 17:31 son istek aldı ben uygulama günlüğüne de görebileceğiniz ve sonra mod_jk.log içinde benim httpd error_log sonra aşağıdaki

[Thu Sep 06 17:37:07 2012] [18784:53792] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (947): (worker1) can't receive the response message from tomcat, network problems or tomcat is down (127.0.0.1:8009), err=-104 
[Thu Sep 06 17:37:07 2012] [18784:53792] [error] ajp_get_reply::jk_ajp_common.c (1536): (worker1) Tomcat is down or refused connection. No response has been sent to the client (yet) 

ve görebileceğiniz

[Thu Sep 06 17:38:39 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting 

Yani herhangi bir hata almadan önce 6 dakika oldu ve bundan sonra max istemciler hatasından önce 1 dak 30 oldu. Tomcat'in yeniden başlatılması da bu sorunu çözdü.

Apache, tomcat veya connector config'ımızda bahsettiğim dışında bir değişiklik yapılmadı (aşağıdaki geçerli yapılandırma), ancak kullanıcı başına daha fazla Ajax isteği gerçekleştirmek için sitemizde değişiklikler yaptık. Anlamak istediğim, sunucumuzu ne kadar doğru bir şekilde değiştirdiğimi anlayabilmek için sistemimizi analiz etmenin en iyi yolu, sunucumuzu aşırı yüklememem, ancak bu sorunun gerçekleşmesini engellemem.

Teşekkür Iain

Güncel Yapılandırma

httpd.conf

Timeout 300 
KeepAlive on 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 

LoadModule jk_module modules/mod_jk.so 
JkLogLevel error 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories +DisableReuse 

workers.properties

# Define 1 real worker using ajp13 
worker.list=worker1 
# Set properties for worker1 (ajp13) 
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009 
worker.worker1.lbfactor=50 
worker.worker1.cachesize=10 
worker.worker1.cache_timeout=600 
worker.worker1.socket_keepalive=1 
worker.worker1.recycle_timeout=300 

httpd-mpm.conf

StartServers   5 
MinSpareServers  5 
MaxSpareServers  10 
MaxClients   150 
MaxRequestsPerChild 0 

Tomcat ayarları standart erkek kedi ayarlar yalnızca vardır

+0

durdu buldum Tomcat 6/7'ye yükseltmeyi düşündünüz mü? –

+0

Ben teknoloji yığını kurmadı ve yükseltmek zorunda kalmazdım umuyordum. Eğer ona gelirse, denenecek bir şey olabilir ama bu doğru konfigürasyonla düzeltilebileceğine dair bir his var. – sparkdoo

cevap

2

cevap canlı tutma zaman aşımı değiştirmek olduğu ortaya çıktı. Bunun olmasını engellemek için gereken tek şey KeepAliveTimeout'u 15'den 2'ye değiştirmek ve 5000'den fazla MaxRequestsPerChild eklemek oldu.Bu sorunu yinelenen

İlgili konular