我在Docker上做了一个设置,Nginx是Tomcat服务的反向代理。在重负载(测试)中,我得到了响应时间的尖峰。
事实证明,没有Nginx的Tomcat服务的一个实例比前面有Nginx的多个服务运行得更好,所以问题在于Nginx和Tomcat之间。经过进一步的检查,我发现Nginx upstream_connect_time上升到3s,有时甚至是7s。
我试着在Nginx上玩keepalive_connections、proxy_connect_timeout、worker_processes和worker_connections,但是没有任何帮助。我列表中的下一个目标是为Tomcat max_connections尝试更高的值。
高upstream_connect_time的原因是什么?
发布于 2021-01-15 11:44:07
我解决了这个问题
proxy_http_version 1.1;
proxy_set_header Connection ""; 没有这些,“保持活着”没有任何意义,所以我对“保持活着”参数的类型没有任何影响。
如果我正确理解,HTTP1.1允许使用相同的连接来进行模拟响应和请求,并在标题中添加连接"“来保持连接的打开。
用Layman术语来说,以前我曾对Nginx说过允许它在上游使用keepalives,但是我没有将它配置为知道如何保持连接打开( http 1.1和header连接部分),这样就不会在使用的地方保持生命。
最后,在这两个参数设置正确的情况下,保持活500足够“正常”的表现,但保持活1000是为了应对高流量的情况。
https://serverfault.com/questions/1049866
复制相似问题