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