我们正面临一个问题,即我们的IBM HTTP服务器返回“400 Bad Request”错误,我们无法找到原因。
请求是一个SOAP请求,应该由Tibco SOAP服务提供,但请求未到达应用程序(应用程序日志中没有相同的日志) - 并且在HTTP服务器级别出错。
我们使用的HTTP服务器仅作为代理,只是将请求传递给应用程序。
来自访问日志:
10.239.12.250 - - [17 / Nov / 2016:10:23:19 +0000]“POST / OnlineCheck HTTP / 1.1”400 - 300“Java1.7.0_40”300/300021637
当我检查错误日志时:
[2016年11月17日10:28:19] [错误](70007)指定的超时时间 已过期:proxy:预取请求主体未能[:: 1]:9876 (temp.adv.com)来自10.213.123.12
收到请求后5分钟会返回错误,您可以从日志中看到。
需要注意的一些要点:
错误仅来自一个客户端(多个客户端使用相同的服务),并且它们使用OSB / Weblogic进行负载平衡
这仅发生10-20%的请求,并且是随机的。 Load Balancer再次发送相同的请求(2.5分钟后没有得到任何响应,服务器响应正常)
我想知道是否有任何方法可以捕获错误可能导致的错误? 400 \ Bad Request Error可能是什么原因?
答案 0 :(得分:1)
错误消息表示mod_proxy等待POST主体,它从未被客户端传输。因此,客户端发送的Content-Length或Transfer-Encoding:chunked无效,导致400状态代码。
您可以取消注释“mod_net_trace”的LoadModule,以记录为这些请求完成的I / O,并查看预期的正文类型并确认它永远不可用。
如果您不信任传输内容的内部视图,您可以使用数据包捕获来确认相同的事情。