Java >> Java tutorial >  >> Tag >> Tomcat

Peter Roßbachs Tomcat 6 Talk på RheinJUG

Peter Roßbach, kerneudvikler på Tomcat-projektet, holdt en snak på RheinJUG i Düsseldorf torsdag. Det var en meget dejlig blanding af Tomcat-arkitektur, bedste praksis, Open Source-fællesskab samt nuværende og fremtidige udviklinger, snarere end en tør teknisk snak.

Justering af Tomcat-ydelse

Med hensyn til ydeevne nævnte han, at den største negative faktor er at bruge udviklingstilstand til produktionsmiljøer. Tjek et par parametre, som påvirker Tomcats ydeevne.

Fra Tomcat 6 er der den forbedrede protokolhåndtering tilgængelig:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
 connectionTimeout="20000" />

derudover driver Java NIO en ny forbedret mulighed for fildownload. Servlets skal bare indstille sendefilanmodningsparametre og ikke udsende flere data. Den fil vil derefter blive pushet af tomcat til brugeren:

 org.apache.tomcat.sendfile.filename: Canonical filename of the file which will be sent as a String
 org.apache.tomcat.sendfile.start: Start offset as a Long
 org.apache.tomcat.sendfile.end: End offset as a Long

org.apache.tomcat.sendfile.filename:Kanonisk filnavn på filen, der vil blive sendt som en streng org.apache.tomcat.sendfile.start:Start offset som en lang org.apache.tomcat.sendfile.end:Slut offset som en lang

produktionsservere bør ikke implementere automatisk:

<Host name="localhost" autoDeploy="false" deployOnStartup="false" deployXML="false">

Jasper JSP-kompileren bør også indstilles:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
<param-name>development</param-name>
<param-value>false</param-value>
  </init-param>
  <init-param>
<param-name>genStringAsCharArray</param-name>
<param-value>true</param-value>
  </init-param>
  <init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
  </init-param>
</servlet>

jsp org.apache.jasper.servlet.JspServlet udviklingfalsk genStringAsCharArraysand trimSpacestrue

Brug mod_jk til belastningsbalancering

Som et andet hovedemne i hans foredrag præsenterede han modulet "mod_jk", som i forbindelse med en Apache Httpd og Tomcat AJP-protokollen gør det muligt at distribuere java-applikationer på flere Tomcat-servere.

Han forklarede de forskellige loadbalancing-opsætninger, og at det måske endda giver mening at bruge en Tomcat-server pr. applikation, da dette giver bedre hukommelsesstyring og forbedrer den generelle høje tilgængelighed.

Tomcat-konfiguration:

<Connector port="8009" protocol="AJP/1.3"/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node01">

mod_jk Konfiguration inde i Httpd:

<IfModule !mod_jk.c>
  LoadModule jk_module "modules/mod_jk.so"
</IfModule>
JkShmFile "logs/mod_jk.shm"
 
JKWorkerProperty worker.list=loadbalancer
JKWorkerProperty worker.node01.port=8009
JKWorkerProperty worker.node01.host=localhost
JKWorkerProperty worker.node01.type=ajp13
JKWorkerProperty worker.loadbalancer.type=lb
JKWorkerProperty worker.loadbalancer.connection_pool_minsize=0
JKWorkerProperty worker.loadbalancer.connect_timeout=30000
JKWorkerProperty worker.loadbalancer.prepost_timeout=10000
JKWorkerProperty worker.loadbalancer.balance_workers=node01
JKWorkerProperty worker.loadbalancer.method=Request
JKWorkerProperty worker.loadbalancer.retries=2
JKWorkerProperty worker.loadbalancer.recovery_options=7
JKMount /myapps* loadbalancer

LoadModule jk_module "modules/mod_jk.so"JkShmFile "logs/mod_jk.shm" JKWorkerProperty worker.list=loadbalancerJKWorkerProperty worker.node01.Jhost=worker.09 node01.type=ajp13JKWorkerProperty worker.loadbalancer.type=lbJKWorkerProperty worker.loadbalancer.connection_pool_minsize=0JKWorkerProperty worker.loadbalancer.connect_timeout=30000JKWorkerProperty worker.loadbalancer.prepost_timeout=10000JKWorkerProperty worker.loadbalancer.balance_workers=node01JKWorkerProperty worker.loadbalancer.method=RequestJKWorkerProperty worker.loadbalancer .retries=2JKWorkerProperty worker.loadbalancer.recovery_options=7JKMount /myapps* loadbalancer

Yderligere dokumentation om mod_jk worker kan findes her:

http://tomcat.apache.org/connectors-doc/reference/workers.html

I alt en meget interessant foredrag, med masser af ting at lære af, lad det være Tomcat-projektet eller Tomcat-arkitekturen, eller hvordan Open Source "lever", og hvad man som udvikler eller arkitekt bør overveje, når man udvikler en Java-webapplikation.


No
Java tag