Occorre innanzitutto determinare la modalità di esecuzione di Apache, in questo caso con il comando apachectl -l determiniamo quali moduli sono caricati, nel nostro caso:
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_proxy.c
mod_proxy_connect.c
mod_proxy_ftp.c
mod_proxy_http.c
mod_proxy_ajp.c
mod_proxy_balancer.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c
Quindi notiamo che la modalità di esecuzione è "prefork", andiamo quindi a ottimizzare l'apposito file di configurazione: httpd-mpm.conf
<IfModule mpm_prefork_module>
StartServers 50
MinSpareServers 10
MaxSpareServers 50
MaxClients 500
MaxRequestsPerChild 250
</IfModule>
Per quanto concerne il modulo mod_jk effettuiamo le seguenti ottimizzazioni nel file workers.proprieties:
worker.node1.ping_mode=A
worker.node1.ping_timeout=20000
worker.node1.connection_pool_timeout=600
per tutti i nodi gestiti dal Load Balancer.
Naturalmente questo tuning lato Apache dovrà essere accompagnato dal tuning sul sistema operativo, quindi nel file /etc/sysctl.conf inseriamo i parametri di ottimizzazione del kernel
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 20
kernel.shmmax=2147483648
kernel.sem=250 32000 100 128
fs.file-max=794598
net.ipv4.ip_local_port_range=1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
Nessun commento:
Posta un commento