有生之年又踩到了Tengine的Bug

发表于:2018-3-12 11:06  作者:Freyja   来源:bangbang93.blog

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Bug 软件测试管理 缺陷管理

  今天新上线一个项目的时候用到了一个上传的接口,在本地测试和内网环境下都正常,上服务器以后一直504,应用log显示文件没有被上传上来,而浏览器log却显示文件正常上传。
  初步推断是tengine上没把请求转发完全,导致后端一直在等待剩下的body,直到90s超时。
 
  于是在服务器上架起了ssh隧道,通过本地直传服务器,就能够正常上传,于是将问题确定在了反代的tengine上
  最初以"nginx proxy_pass post 504"为关键字,在Google上搜索,有说设置proxy_http_version 1.1并且加proxy_set_header Connection "keep-alive";就正常了的,上调各种timeout也肯定不是我这里的问题,毕竟文件只有几十KB。
  没辙了,抓包吧,不抓不知道,一抓吓一跳
  
  boundary居然丢了,正常情况下的multipart/form-data应该至少有一对boundary,就像浏览器中显示的
  
  两个boundary夹着文件一起上传,而boundary的丢失导致请求实际长度和content-length对不上,所以后端一直在等待tengine把省下的请求发送过去,那么继续Google
  结果翻到了这个issue
  https://github.com/alibaba/tengine/issues/1003
  最后回复两天前
  正好前阵子tengine刚升级到2.2.2,我在厂里也起了http2,所以用最新的tengine重新编译了,结果正好撞上了这次的bug
  目前的临时解决方案是proxy_request_buffering off;,禁用代理缓冲
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

2018年ISTQB高级认证测试经理在线培训全国首播,限免领取考试大纲>>

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2018, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道