使用tengine的dyups module做动态负载均衡时,Nginx升级到1.19.2以上后,dyups模块出现读body数据偶发不完整的问题

oogrdqng  于 3个月前  发布在  Nginx
关注(0)|答案(1)|浏览(97)

问题描述:
升级Nginx版本到1.25.3以后,Tengine dyups模块在更新upstream数据时,如果IP比较多,比如500个+,会出现dyups失败的现象。通过gdb调试,发现是dyups模块在ngx_http_dyups_read_body中没有读到完整的body数据导致。
追查了下Nginx相关changelog,发现在1.19.2中针对chunk相关做了很多优化,可以参考 nginx/nginx@9edc93f#diff-2cd52ff90de8e452b238fca4c59dbd36268ad306bdc8a9eb30788e9d1963bfb4%EF%BC%8C%E4%BC%98%E5%8C%96%E4%B8%AD%E8%B0%83%E6%95%B4%E4%BA%86body%E6%95%B0%E6%8D%AE%E7%9A%84%E5%A4%84%E7%90%86%E6%96%B9%E5%BC%8F%EF%BC%8C%E5%BD%B1%E5%93%8D%E4%BA%86dyups%E6%A8%A1%E5%9D%97%E8%AF%BBbody%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%80%A7%E3%80%82

cgyqldqp

cgyqldqp1#

在dyups仓库中也有人提到过类似问题,但是没有看到下文描述, yzprofile/ngx_http_dyups_module#140

相关问题