2012-04-22 108 views
3

我的Java webapp在Tomcat 7.0.22内部运行,有时会有HTTP请求在生产环境中导致HTTP 500(我的应用中出现意外的异常)。为了在临时环境中重现这些错误,我通常会运行tcpdump并记录所有HTTP通信,然后使用WireShark过滤包含http.response.code != 200 or 204 or 302的数据包,并在每个响应中运行“遵循HTTP流”,从而向我发送导致此错误的请求。然后,我可以在分段环境中使用cURL重新运行此请求。使用tcpdump记录失败的HTTP请求

我的问题是:

  • 怎么能这个程序可以自动完成?
  • 有没有一种方法可以实现与其他技术一样的效果(重现错误)? (也许有些Filter里面的Tomcat)

感谢

亚历

+0

但是,为什么你不做简单的事情就像在prod env中记录请求一样? – 2012-04-22 10:55:30

+0

我希望它是透明的。我还没有找到一个很好的方法来做到这一点 – AlexV 2012-04-22 11:26:29

回答

1

有提供这些功能的工具。实际上,他们甚至可以做更多的事情:他们通常会测试您的java代码,以便可以检测哪个模块对失败负责。

我个人正在为实现此类解决方案的公司命名为Correlsense。它是商业性的,但是您可以从免费发布的评估版开始,并且可以从我们的网站下载。或者我可以让你看看newrelic.com,看起来比Correlsense更好,虽然我个人并没有使用它,只是试图玩一点。

+0

谢谢,其实我们有一个newRelic许可证,我检查这个功能。你是否偶然知道它是如何在newRelic中实现的。因为Tomcat过滤器有一个不太好的解决方案,它会消耗输入流,从而能够转储ip。 – AlexV 2012-04-22 11:28:41