We are trying to call a servlet that generates and returns an image over SSL. Apache is sitting in front doing the SSL, it then connects to Jetty/Tomcat using AJP. The performance we are getting is poor to say the least, any help to increase the performance would be much appreciated.
We are comparing the times to the legacy system we are trying to replace which is written in python.
We are running the tests using jmeter, the test consist of hitting each implementation 10 times with n threads. All test are over HTTPs, unless stated otherwise.
Here are the python results
Python Threads times Average MS Deviation 50 10 469 251 100 10 590 341 200 10 615 413
Here are the servlet results
Java System Threads times Average MS Deviation 50 20 5639 1227 100 10 12304 2757 200 10 31611 4998 (without HTTPS: AVE MS: 36 DEV 38) 650 10 139000* 45000 (without HTTPS: AVE MS: 32 DEV 46)
When we turn off HTTPs the java system is literally thousands of times faster. We've swapped out jetty and replaced it with tomcat, the results were the same. There was very little improvement when we used mod_proxy instead of mod_jk.
Using just jetty by itself gives us the following results:
Java System
Threads times Average MS Deviation
50 10 1463 1938Which is better but still slow.
We really want to use Apache to handle the SSL, but it seems that there is a huge problem when apache is doing the SSL and getting Jetty/Tomcat to generate the dynamic content.
Attached are snippets from the conf files, interestingly setting JkExtractSSL off or JkExtractSSL on makes zero difference.
We are running Debian woody, jboss 3.2.1, (Jetty 4.2.9/Tomcat4.0.3), Apache 13.26, mod_jk 3.3a
# workers.properties - #
ps=/ worker.list=site-seal,loadbalancer
worker.localhost_siteseal.port=8011 worker.localhost_siteseal.host=localhost worker.localhost_siteseal.type=ajp13 worker.localhost_siteseal.lbfactor=1
worker.site-seal.type=lb worker.site-seal.balanced_workers=localhost_siteseal
worker.inprocess.cmd_line=start worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
# workers.properties ends
# # snippet from httpd.conf # <IfModule mod_jk.c> JkWorkersFile /etc/apache/workers.properties include /etc/apache/mod_jk.conf JkLogFile /var/log/apache/mod_jk.log JkLogLevel debug JkMount /site-seal/* site-seal JkExtractSSL off </IfModule> # # httpd.conf ends #
Thanks in advance for your help.
Rian
smime.p7s
Description: S/MIME Cryptographic Signature
