tomcat为ajp连接器的套接字创建获得了最好的日志级别



我们有一个非常默认的apache2(2.2),mod_jk(1.2.30)连接到同一主机上的tomcat(6),没有负载均衡器,只配置了一个工作进程。

为了调试一个特定的问题,我尝试增加ajp连接的tomcat日志级别。

我特别感兴趣的是关闭/打开插座,以及这样做的原因。

但是,我找不到正确的日志记录参数。

通过tomcat-6.0-doc/api/i查找无法找到创建套接字的正确类。

对于我希望理解的几个类,关闭套接字是可能的。logging.properties

handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINEST
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
org.apache.catalina.core.AprLifecycleListener.level = ALL
org.apache.catalina.connector.level = FINEST
org.apache.coyote.level = FINEST
org.apache.tomcat.util.net.AprEndpoint. = FINEST
org.apache.tomcat.level = FINEST
org.apache.tomcat.jni.Socket = FINEST

server.xml重要部件:

<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
<Listener className="org.apache.catalina.core.JasperListener" />
<!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="localhost" />
<Listener className="org.apache.jk.config.ApacheConfig" modJk="/usr/lib/apache2/modules/mod_jk.so" />

mod_jk workers.properties

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.connection_pool_size=1

所以我的问题是:

如何将套接字的创建/关闭记录在案?我需要为此登录的类的名称是什么?

或者我需要Valgrind或类似的工具吗?

我需要这个(只是为了完成)的原因

在我们的测试环境中,我们有大约1%的请求来自标准浏览器,导致502坏网关或503服务暂时不可用的http状态代码。

Mod_jk跟踪日志确实显示了错误的message_format,但我们可以告诉wireshark日志和ajp数据是有效的。

错误是可复制的,只是不能完全根据一个特定的请求。如果我做200个并行请求(只读),我至少可以触发两次错误。

提前感谢

无论是java.net.socket还是jni.socket实现org.apache.tomcat.jni.socket都不会"正常"记录日志,即使将loglevel设置为best也是如此。没有简单的日志记录代码。唯一可能发生的事情是在出现错误的情况下出现异常。

但是,可以使用jconsole和/或jVisualVM来跟踪相应的类。

对我们来说,java.net.socket是我们进一步调试问题所需的类。

相关内容

最新更新