hessian 500 read time out问题
昨天,提交了一个订单撤销发送短信的需求。QA的同事在测试该问题的时候,发现原来的代客下单给用户发送短信的功能也不好用。最后通过追踪QA服务器上的日志文件,发现日志中并没有找到要发送短信人的信息。
这个问题,我同时在DEV的环境上进行了复测。令人意想不到的是DEV环境的数据竟然可以返回。这就让我觉得很诧异。同样的代码为什么会有不一样的数据返回呢?
今天一上班来到公司就赶紧的打开电脑,追踪这个问题。想到写一个单元测试,测试RPC接口是否可以成功返回数据,代码如下:
HessianProxyFactory factory = new HessianProxyFactory(); factory.setChunkedPost(false); factory.setOverloadEnabled(false); factory.setReadTimeout(15000); long start =System.currentTimeMillis(); Interface xxx=null; try { xxx= (Interface) factory.create(Interface.class, "url"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<xxx> xxx= xxx.getxxx(参数1,参数2); System.out.println("xxxx cost time:"+(System.currentTimeMillis()-start));
出于保密的原因,故重要的代码已经改掉。
大家看一下代码的两个地方:factory.setReadTimeout(15000) 和 xxx= (Interface) factory.create(Interface.class, "url");
一个代表设置他的超时时间,另一个重点指出的是这的url是我DEV环境的url,执行单元测试,成功返回结果
这时候把url的地址换成QA的地址,其他的地方不变。看一下执行结果:
为什么在DEV环境可以正常返回,而在QA环境却超时呢???
赶紧找运维的同事 去追查了一下这个问题 发现QA和DEV上的tomcat的配置参数不一样(该配置就不上图了),然后把QA环境中的数据拷贝到DEV环境一份。重启服务,再次在dev url上执行该单元测试,完美返回。又一次失败,哎。。。。
再次咨询公司的架构同事,他给了一个建议,让我在方法调用前后打印一下执行时间。好,马上照办。
首先注释掉这行代码:
添加如下两行代码:
打印一下执行时间,如下:
我擦,原来时间比我上面代码中设置的要大,进一步知道QA的数据量比较大,导致接口数据返回比较慢,故最终的解决方案:加大超时时间设置
上一下完整的最终代码片段:
HessianProxyFactory factory = new HessianProxyFactory(); factory.setChunkedPost(false); factory.setOverloadEnabled(false); factory.setReadTimeout(20000); long start =System.currentTimeMillis(); xxx yyy=null; try { yyyyy= (xxxxx) factory.create(xxxx.class, "url"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<ooo> pUsers = xxxxx.getxxxxx(arg1, arg2); System.out.println("cost time:"+(System.currentTimeMillis()-start));
补充:在此之前,上网查过此类问题。不过还是具体问题具体分析。在此记录,又遇到此类问题的朋友,希望有所帮助,同时作为自己工作过程中的解决问题的一个宝贵财富保留
上一篇: 如何保存新鲜竹笋
推荐阅读
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
-
hessian 500 read time out问题
-
hessian 500 read time out问题
-
完美解決Nginx 504 Gateway time-out问题
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
-
pip install时,出现Read time out 解决办法
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file_PHP教程
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file_php实例
-
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file