维护的一个接口出现了执行时间超过半个小时情况。
1、接口执行超过半个小时未给调用程序反馈,调用程序认为调用失败,报错
com.caucho.hessian.io.HessianProtocolException:
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:171)
at $Proxy0.createAccount(Unknown Source)
解决问题思路:查看源代码,分析171代码的含义
1、客户端连接关闭
2、网络数据丢包(linux下的iptables控制)
3、接口程序执行超过30分钟时
4、服务端连接关闭
四中方式下执行均未模拟出相同报错。
最后,考虑到程序是运行在负载机器上,通过负载机器访问接口程序,对于负载机器的原理不了解。问题一的解决到次搁浅。
由于对于apache负载机器的研究代价太大,于是,将程序执行时的打印日志:开始时间、执行时间、结束时间等。
问题2、在打印足够的日志发现接口执行确实超过半个小时,接口重复调用三次、四次的也确实存在。而像问题一的问题缺没有再次出现。
在测试环境双方联调测试发现:执行超过半个小时接口会被重复调用。跟踪访问日志发现调用方无二次调用操作,而接口二次调用。
于是,将此现象与服务器管理员描述后,调整了负载机的时间控制。问题得到规避。
抛砖引玉。
1、接口执行超过半个小时未给调用程序反馈,调用程序认为调用失败,报错
com.caucho.hessian.io.HessianProtocolException:
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:171)
at $Proxy0.createAccount(Unknown Source)
解决问题思路:查看源代码,分析171代码的含义
1、客户端连接关闭
2、网络数据丢包(linux下的iptables控制)
3、接口程序执行超过30分钟时
4、服务端连接关闭
四中方式下执行均未模拟出相同报错。
最后,考虑到程序是运行在负载机器上,通过负载机器访问接口程序,对于负载机器的原理不了解。问题一的解决到次搁浅。
由于对于apache负载机器的研究代价太大,于是,将程序执行时的打印日志:开始时间、执行时间、结束时间等。
问题2、在打印足够的日志发现接口执行确实超过半个小时,接口重复调用三次、四次的也确实存在。而像问题一的问题缺没有再次出现。
在测试环境双方联调测试发现:执行超过半个小时接口会被重复调用。跟踪访问日志发现调用方无二次调用操作,而接口二次调用。
于是,将此现象与服务器管理员描述后,调整了负载机的时间控制。问题得到规避。
抛砖引玉。