Hi,
I’m running into a problem with my production tomcats (7.0.52) that I can’t
track down. Occasionally (10 times an hour maybe) I’m getting a HttpServerError
500 error that isn’t appearing in tomcat or my application logs. I see it from
my NewRelic monitoring agent though, which is how I realized I was getting
them. Most of the requests are completing successfully.
I am running Tomcat on RHEL 6.5, behind Apache httpd using mod_jk. I’ve
attached the relevant (I hope) bits of config below. I am not sure why I’m not
seeing anything in the tomcat logs. I am also running it through the Tanuki
Java Wrapper .
I am using the latest version of mod_jk (1.2.39).
Does anyone have any ideas?
When I turned on debugging for mod_jk I saw the 500 error, but not really that
helpful.
log4j.properties (WEB-INF/classes)
================
# Set root logger level to DEBUG and its only appender to CONSOLE.
log4j.rootLogger=ERROR, file
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.stdout.encoding=UTF-8
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=/opt/tomcat-instance/ops-center.opterus.net/logs/ops-center.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p [%t] %c{1}:%L -
%m%n
log4j.appender.file.encoding=UTF-8
### set log levels - for more verbose logging change 'info' to 'debug' ###
###log4j.logger.org.hibernate = debug
log4j.logger.com.opterus.opscenter=ERROR
log4j.logger.org.springframework.security.saml=ERROR
log4j.logger.org.opensaml=ERROR
log4j.logger.PROTOCOL_MESSAGE=ERROR
mod_jk.conf
===========
LoadModule jk_module modules/mod_jk.so
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel error
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkShmFile /var/log/httpd/jk.shm
server.xml
========
<Connector port="8009" connectionTimeout="600000" minSpareThreads="5"
packetSize=“16384" address="127.0.0.1"URIEncoding="UTF-8" enableLookups="false"
disableUploadTimeout="true" maxSpareThreads="75" maxThreads="400"
protocol="AJP/1.3" />
worker.properties
=============
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
worker.worker1.connection_pool_timeout=600
worker.worker1.connect_timeout=10000
worker.worker1.max_packet_size=16384
Apache Virtual Host
===============
ExpiresActive On
ServerName ops-center.opterus.net
DocumentRoot
/opt/tomcat-instance/ops-center.opterus.net/ops-center/appBase/ROOT
ErrorDocument 503 /error/opterus/503.html
# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/ssl_error_log
#TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol -All +TLSv1 +SSLv3
SSLHonorCipherOrder On
SSLCipherSuite
ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:!RC4:HIGH:!MD5:!aNULL:!EDH
SSLCertificateFile /etc/httpd/conf/ssl.crt/opterus.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/opterus.key
SSLCertificateChainFile /etc/httpd/conf/ssl.key/gs_intermediate.pem
SSLCACertificateFile /etc/httpd/conf/ssl.key/gs_ev_root.pem
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
# LogFormat "%h" combined
# CustomLog /dev/null combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
combined
CustomLog logs/ssl_access_log combined
JkStripSession On
JkMount /* worker1
JkUnMount /server-status worker1
JkUnmount /res/* worker1
JkUnmount /images/* worker1
JkUnmount /error/* worker1
JkUnmount /blank.html worker1
JkUnmount /tiny_mce_*/* worker1
JkUnmount /lbcheck.faces worker1
<FilesMatch "\.(gif|ico|jpg|jpeg|bmp|png|js|css)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(js|css)$">
Header set Vary "Accept-Encoding"
</FilesMatch>
<Files blank.html>
ExpiresDefault A29030400
Header append Cache-Control "public"
</Files>
</VirtualHost>
Thanks for any help!
Cheers,
Ian