Configuration Tomcat

From Tuxunix
Jump to: navigation, search

Configuration Apache2

Mode Proxy AJP

#> a2enmod mod_proxy && a2enmod proxy_ajp
<VirtualHost *:80>
	        Servername www.FQDN
	        ServerAdmin webmaster@ecritel.net
	
	        <IfModule rewrite.c>
	                RewriteEngine On
	                RewriteRule ^/$            /APPLIPATH/ [R]
	        </IfModule>
	
	        <IfModule proxy.c>
               <IfModule proxy_ajp.c>
	                        ProxyPass         /APPLIPATH  ajp://127.0.0.1:8009/APPLIPATH
	                        ProxyPassReverse  /APPLIPATH  ajp://127.0.0.1:8009/APPLIPATH
               </IfModule>
	        </IfModule>

       ErrorLog /var/log/apache2/www.FQDN-error.log
       CustomLog /var/log/apache2/www.FQDN-access.log combined
	
</VirtualHost>

Mode JK

  • Installer le mod_jk :
#> apt-get install libapache2-mod-jk
#> a2enmod jk_module
<VirtualHost *:80>
	        Servername www.FQDN
	        ServerAdmin webmaster@ecritel.net
	        DocumentRoot /var/lib/tomcat/webapps/APPLI
	
	        <Directory /var/lib/tomcat/webapps/APPLI>
	                Options -Indexes FollowSymLinks
	                AllowOverride All
	                Order allow,deny
	                allow from all
	        </Directory>
	
	        <IfModule mod_jk.c>
	                JkMount / default #(correspond au worker.list)
	                JkMount /APPLI/* default
	        </IfModule>
	
	        ErrorLog /var/log/apache2/www.FQDN-error.log
	        CustomLog /var/log/apache2/www.FQDN-access.log combined
	
</VirtualHost>

Définition du worker

  • Default file : /etc/libapache2-mod-jk/workers.properties


Une instance

workers.tomcat_home=/var/lib/tomcat
workers.java_home=/usr/lib/jvm/java-6-sun/
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1

Deux instances

#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/usr/share/tomcat4

#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=/usr/lib/j2sdk1.4-sun 

#
# You should configure your environment slash... ps=\ on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=/
#
#------ worker list ------------------------------------------
#---------------------------------------------------------------------
#
#
# The workers that your plugins should create and work with
#
worker.list=ajp13_worker,ajp13_worker_inst2
#
# Defining a worker named ajp13_worker and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker_inst2.port=8010
worker.ajp13_worker_inst2.host=localhost
worker.ajp13_worker_inst2.type=ajp13
#AD PT
worker.ajp13_worker.connection_pool_timeout=200
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.ajp13_worker.lbfactor=1
#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----> If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13_worker

Paramétre mémoire

  • Fichier defaut : "/etc/default/tomcat"
CATALINA_OPTS="-Djava.awt.headless=true -Xms512M -Xmx512M -XX:MaxPermSize=256M -server"

Xms : La pile (espace mémoire) est initialisée à la valeur spécifiée par -Xms et elle grandira dynamiquement quand les objets seront crées jusqu'a atteindre la taille maximale défini par le paramétre suivant Xmx

Xmx : Taille maximale de la pile allouée.

MaxPermSize : Espace mémoire qui est alloué pour le chargement des classes (par défaut 64M)

Erreur type

En java lorsque la JVM n'a plus assez de mémoire pour s'exécuter, elle génère une Erreur java.lang.OutOfMemoryError

  • vous n'avez pas alloué assez de mémoire à la JVM
java.lang.OutOfMemoryError: Java heap space (Valeur Xmx et Xms à modifier)
java.lang.OutOfMemoryError: PermGen space (valeur XX:PermSize à modifier)

Solution : allouer plus de mémoire grâce aux paramètres -Xmx, -Xms et -XX:PermSize


  • votre code a ce qu'on appelle un fuite mémoire

Solution : Détecter et corriger les fuites mémoires JMAP


  • Pas assez de mémoire vive
java.lang.OutOfMemoryError: request <size> bytes for <reason>

Solution : Abaisser la valeur Xmx ou augmenter la RAM sur le serveur.