Целта на ресусра е предоставянето на работеща конфигурация на споменатите сървъри. Допускаме, че имате инсталирани apache prefork, mod_jk и jboss.
Започваме с конфигурацията на апача:
apache2.conf :
# Replace jsp-hostname with the hostname of your JSP server, as
# specified in workers.properties.
#
<IfModule mod_jk.c>
JkWorkersFile /etc/apache2/includes/workers.properties
JkShmFile /var/log/apache2/jk-runtime-status
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
</IfModule>
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 30
MaxClients 200
MaxRequestsPerChild 0
</IfModule>
#Your site config
<VirtualHost 78.78.78.78:80>
ServerAdmin info@yoursite.com
ServerName www.yoursite.com
ServerAlias yoursite.com 78.78.78.78
ErrorLog /var/log/apache2/users/some_error.log
<IfModule mod_jk.c>
JkMount /*.* worker1
JkMount /* worker1
</IfModule>
</VirtualHost>
JkWorkersFile трябва да сочи към
workers.propertiesЕто и самия workers.properties
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker1.connection_pool_timeout=600
#Socket timeout in seconds used for the communication channel between JK and remote host.
worker.worker1.socket_timeout=40
worker.worker1.socket_keepalive=1
#Do not use connection_pool_size with values higher then 1 on Apache 2.x prefork
worker.worker1.connection_pool_size=1
#Do not use connection_pool_size with values higher then 1 on Apache 2.x prefork
worker.worker1.connection_pool_minsize=1
worker.worker1.ping_mode=A
#Timeout in milliseconds used when waiting for the CPong answer of a CPing connection probe.
worker.worker1.ping_timeout=10000
#connection_ping_interval in seconds
worker.worker1.connection_ping_interval=70
server.xml на JBoss ili Tomcat:
<Connector port="8009" address="${jboss.bind.address}"
protocol="AJP/1.3"
emptySessionPath="true"
enableLookups="false"
redirectPort="8443"
URIEncoding="UTF-8"
maxThreads="400"
connectionTimeout="600000"
acceptCount="400"
/>
Ключово е:
- при определянето на
MaxClients да спазвате следната формула:
MaxClients = maxThreads * 0.8
или поне да гледате
MaxClients да не е > от
maxThreads, като
MaxClients не може да е повече от 256
-
connection_pool_timeout=600 трябва да е колкото
<Connector...connectionTimeout="600000", като connection_pool_timeout е в секунди а connectionTimeout е в милисекунди.