Apache mod_proxy, Tomcat 5.5 - иногда нет ответа - PullRequest
1 голос
/ 04 июня 2011

Запуск tomcat 5.5 с (64-битный сенто, 8 Гб оперативной памяти), mysql, apache

"-server -Xss1M -Xms2G -Xmx3550m -XX:+UseConcMarkSweepGC -XX:NewSize=1G -XX:MaxPermSize=512m XX:CMSInitiatingOccupancyFraction=70"

запуск нескольких приложений на tomcat через apache в качестве внешнего интерфейса (почти 10 доменов для различных контекстных путей на tomcat)

apache config:
httpd.conf:

KeepAlive On

ProxyRequests Off

ProxyPreserveHost On

Timeout 1800

ProxyPass         /demo  http : //127.0.0.1:8080/demo

ProxyPassReverse  /demo  http :// 127.0.0.1.22:8080/demo

ProxyPass         /demo2  http :// 127.0.0.1:8080/demo2

ProxyPassReverse  /demo2  http :// 127.0.0.1.22:8080/demo2

SetEnv force-proxy-request-1.0 1

SetEnv proxy-nokeepalive 1

.htaccess

RewriteEngine on

RewriteCond %{HTTP_HOST} ^test\.web\.com$ [NC]

RewriteRule (.*) http : //test.web.com/demo/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^test2\.web\.com$ [NC]

RewriteRule (.*) http : //test2.web.com/demo2/$1 [L,R=301]

Все отлично работает, включая время отклика и все 10 экземпляров (разные домены), но 3-4 раза в день: http://test.web.com не дает никакого ответа, выдает пустую страницу (полностью пустой) в то время как в то время, когда он пустой, прямой URL: http://127.0.0.1:8080/demo работает нормально.Это означает, что tomcat по-прежнему работает нормально, кажется, что apache не может переслать запрос на tomcat - сейчас загрузка каждого экземпляра составляет 20 в минуту.

Иногда все работает в течение 3-4 дней, затем это происходит,иногда это продолжается.На некоторое время появляется пустая страница, а через 3-4 минуты она начинает появляться.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

Вы используете балансировщик нагрузки? Пожалуйста, убедитесь, что он не основан на PING. Иногда хостинг-провайдер отклоняет пинговую нагрузку на сеть.

0 голосов
/ 09 июня 2011

Попробуйте использовать JKMount, а не свой прокси-сервер?

У меня есть что-то похожее с apache config:

# 
# Mod_jk settings 
# 
JkWorkersFile "conf/workers.properties" 
JkLogFile "logs/mod_jk.log" 
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE, 
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format 
JkRequestLogFormat     "%w %V %T"


<VirtualHost 127.0.0.1:8443>
    SSLEngine On
    SSLCertificateFile conf/ssl/domainacom.cert
    SSLCertificateKeyFile conf/ssl/domainacom.key
    ServerAdmin boss@domain.com
    ServerName wwwdomainacom
    ErrorLog logs/wwwdomainacom-error_log
    CustomLog logs/wwwdomainacom-access_log common
    JkMount /* wwwdomainacom
</VirtualHost>

, затем в conf / worker.properties:

worker.list=domainacom,domainbcom

# Set properties for domainacom (ajp13) 
worker.domainacom.port=8009
worker.domainacom.host=localhost
worker.domainacom.type=ajp13
worker.domainacom.lbfactor=50
worker.domainacom.cachesize=10
worker.domainacom.cache_timeout=600
worker.domainacom.socket_keepalive=1
worker.domainacom.reclycle_timeout=300

# Set properties for domainbcom (ajp13) 
worker.domainbcom.port=8011
worker.domainbcom.host=localhost
worker.domainbcom.type=ajp13
worker.domainbcom.lbfactor=50
worker.domainbcom.cachesize=10
worker.domainbcom.cache_timeout=600
worker.domainbcom.socket_keepalive=1
worker.domainbcom.reclycle_timeout=300

наконец-то в tomcat:

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" 
           enableLookups="true" redirectPort="8443" protocol="AJP/1.3" URIEncoding="UTF-8" />

Насколько я знаю, у меня никогда не было потерянных запросов.

...