码迷,mamicode.com
首页 > 其他好文 > 详细

由Premature end of Content-Length delimited message body因发的问题排查

时间:2020-07-23 16:14:57      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:接口   http   cat   size   wiki   字符串   efault   inf   bug   

问题出现: 视频剪辑超时

   1。检查系统日志

技术图片

 

 发现这个报错信息,导致接口访问超时获取数据失败。

2。经过对网上信息梳理,发现这个超时是在用域名访问nginx时候,有一个send_timeout超时时间,超过这个时间nginx将连接断开了。代码会报错

3。由于这个请求的数据大小只有2M,大概四千条数据,响应不应该这么慢,然后开始debug查询问题。

4。看图

技术图片

 

这个是httpUtil的一个工具类,可以看到这行代码是有问题的。

 

原因:

使用+拼接字符串的实现原理,基于jdk1.8

 

下面一段代码。把他生成的字节码进行反编译,看看结果。

String testJoin = "testJoin";
String introduce = "测试数据拼接";
String result =
testJoin + "," + introduce;

反编译后的内容如下,反编译工具为jad。

String testJoin= "testJoin";
String introduce = "\u6BCF\u65E5\u66F4\u65B0Java\u76F8\u5173\u6280\u672F\u6587\u7AE0";
String
result= (new StringBuilder()).append(testJoin).append(",").append(introduce).toString();

通过查看反编译以后的代码,可以发现,原来字符串常量在拼接过程中,是将String转成了StringBuilder后,使用其append方法进行处理的。

 

技术图片

 

 

改动代码为如下:

技术图片

 

 这样处理数据的时候就非常快,问题看似已经解决。

由Premature end of Content-Length delimited message body因发的问题排查

标签:接口   http   cat   size   wiki   字符串   efault   inf   bug   

原文地址:https://www.cnblogs.com/technologykai/p/13365603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!