由Premature end of Content-Length delimited message body因发的问题排查
Posted technologykai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由Premature end of Content-Length delimited message body因发的问题排查相关的知识,希望对你有一定的参考价值。
问题出现: 视频剪辑超时
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 = "u6BCFu65E5u66F4u65B0Javau76F8u5173u6280u672Fu6587u7AE0";
String
result= (new StringBuilder()).append(testJoin).append(",").append(introduce).toString();
通过查看反编译以后的代码,可以发现,原来字符串常量在拼接过程中,是将String转成了StringBuilder后,使用其append方法进行处理的。
改动代码为如下:
这样处理数据的时候就非常快,问题看似已经解决。
以上是关于由Premature end of Content-Length delimited message body因发的问题排查的主要内容,如果未能解决你的问题,请参考以下文章
Keil提示premature end of file错误 无法生成HEX文件
Django/Wsgi/Apache 抛出 Premature end of script 错误并且通常的解决方案都不起作用
我的OpenGL学习进阶之旅着色器GLSL运行时报错 GLSL compile error: Premature end of line
我的OpenGL学习进阶之旅着色器GLSL运行时报错 GLSL compile error: Premature end of line