我有一个测试程序在 HTTP 服务器上进行负载测试。它使用一些简单的 Jetty HttpClient 代码来使用 HttpClient 进行 HTTP GET。发送()。在日志中,我们时不时地看到这条消息——可能是错误或异常:
“无法停止线程”,例如(为了便于阅读而截断):
[24412925] INFO 2014-Sep-03 23:20:12.967> -- Request: "http://server.url/getstring ... [24413187] WARN 2014-Sep-03 23:20:13.229> HttpClient@692613741{STOPPING,8<=0<=200,i=0,q=0} Couldn't stop Thread[HttpClient@692613741-304742,5,] [24413187] INFO 2014-Sep-03 23:20:13.229> -- Response #30,473, 00:00:00.262 = [ 22.8K received (max: 102.6K ): "<?xml version="1.0" encoding="UTF-8" standalone="no"?><message ..."
如您所见,消息是在收到 HTTP GET 之后出现的。没有捕获到异常(因为它们都被记录了)并且接收到的 XML 字符串是完整的。
我想捕捉或检测这个问题,也许可以阻止它。目前的问题或兴趣是:
- 我们可以在运行时在调用代码中捕捉或检测到这个问题吗?
- 有没有办法监控 Jetty HttpClient 代码线程上的活动?
- 这是什么意思?
- 有没有办法对此消息/事件进行一些诊断?
- 我们可以以编程方式终止 Jetty HttpClient 处理以清除这种事情吗?
- 我问是因为在一天结束时,这个脚本需要在无人看管的情况下运行。因此,如果我们不能使用 Try/Catch 异常处理方法,那么第二好的方法是确保所有内部状态都被清除/清除。
- 这是 Linux 特有的吗?
- 到目前为止,我们已经在运行相同 JAR 的 Linux 和 Windows 上看到了这一点。
我希望这是一个好奇心。然而,与此同时,根据一般原则,图书馆应该能够提供一些信息,或者作为例外,或者在这样的事情上带有状态码。对于无人值守模式或操作,我无法承受无法解释的线程问题。希望你们中的一个人有办法管理或处理这个问题,在此先感谢。
类似的问题:
- Jetty:以编程方式停止会导致“无法停止 1 个线程”
- 启动了一个名为 MultiThreadedHttpConnectionManager cleanup 的线程,但未能停止它
- 服务器没有在 CTRL-C (SIGINT) 上立即关闭(HitHub 错误)
- Solr 和 Jetty 部署问题
- BugZilla 问题:https ://bugs.eclipse.org/bugs/show_bug.cgi?id=357318 ...也许此消息是对此类错误的响应。是固定的还是神秘的信息?
码头来源:
此消息的一个位置虽然没有真正解释原因或网络状态。
- http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/util/thread/QueuedThreadPool.html(行数:170-190,大约)
是否有 Jetty 调用来监视或检查这种内部状态?