浏览 2k
tengine nginx http块配置如下:
nginx启动后客户端发起请求后,可以通过netstat看到nginx到上游的长连接,并且后续请求会复用连接池中的连接。然后调用dyups,增加upstream中的server:
curl -d "server 100.0.0.100:3344 weight=100;server 100.0.0.100:5566 weight=100;" 127.0.0.1:80/upstream/aaa
此时再发的请求将不再复用dyups模块连接池中的连接,每次都是新建连接来连接上游服务,连接池中的连接也会全部超时释放。keepalive配置失效。
经定位,在调用dyups接口扩缩容之后,新建的uscf中peer.init函数指针指向了ngx_http_dyups_init_peer,整体上会走ngx_http_dyups_module模块的流程(关键是get和free函数),不再使用keepalive模块中的连接池机制。导致keepalive配置失效。
想问下路过的各位大佬,是否有遇到这个问题以及解决方案?

按点赞数排序
按时间排序
sticky模块只能在linux下吧,win下没有。tomcat好像有个session复制吧,或者可以用共享session。
没办法完全不受影响的,因为mirror是子请求,当子请求未结束时,主请求消耗的内存至少是无法释放的。你可以尝试在/mirror里,把超时时间大幅度调低,包括connect/read/send,再压下看看。
微信公众号
加入微信群