回答
收藏
分享
举报
NGINX正向代理出现大量TIME_WAIT问题
提问于2022-07-18 14:36

浏览 4.4k

正向代理配置:

  http {
    server {
        listen 8080;
       # dns resolver used by forward proxying
       resolver 8.8.8.8;
       location / {
           proxy_http_version 1.1;
           proxy_set_header Connection "";
           proxy_set_header Host $host;
           proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
           proxy_pass $scheme://$host;
       }
    }
}  

在处理高并发请求代理时,NGINX后端会出现大量TIME_WAIT连接。

分析下来,NGINX每次代理转发请求时,都会根据应用发过来的请求来与后端服务建链,尽管设置http长连接属性,但每处理完一笔交易就会断开后端连接,长此以往就会出现大量TIME_WAIT连接。

如果并发压力比较大时,就瞬间出现大量TIME_WAIT连接,进而导致NGINX侧系统资源不足(随机端口不足)。


在这种模式下,如何解决TIME_WAIT问题?是否有类似方向代理upstream中配置连接池的方式来避免频繁断链?


已修改于2023-03-17 09:03



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

可以通过 proxy_set_header 设置,keepalive 。

赞同

0

回复举报

回答于2022-10-31 14:11



回复jiayouachunyu
回复
提问者
李永峰
打工人
0
文章
1
问答
0
粉丝
相关问答

ticket已经明确地表明了NGINX开发团队的态度,不支持环境变量实现正向代理,可以尝试使用stream配置proxy_pass转发数据,不过解决方案就不是那么简单了。

点赞 0
浏览 3.6k

我重新下载openresty1.19.3.2

同样的操作也成功了,


点赞 0
浏览 7.6k

提供一些关于Node.js作为服务器的性能的信息。但是,需要注意的是,“最具性能”的服务器技术可能会因特定的用例、需求和应用程序的性质而异。




Node.js以其高性能而闻名,尤其是在处理并发请求方面。它建立在V8 JavaScript引擎上,该引擎针对执行JavaScript代码进行了高度优化。Node.js使用事件驱动的非阻塞I/O模型,使其能够同时有效地处理多个连接,而不会阻塞其他请求的执行。




Node.js的单线程事件循环架构具有可扩展性和高效的资源利用率,适用于具有大量并发连接的应用程序,如实时应用程序、聊天应用程序或流媒体服务。此外,通过npm(节点包管理器)提供的模块和包的大型生态系统为开发人员提供了广泛的工具,以增强其应用程序的性能和功能。




然而,必须考虑到Node.js可能不是所有场景的最佳选择。一些考虑因素包括:




1. CPU密集型任务:对于严重依赖CPU密集型的任务的应用程序来说,Node.js不是最佳选择,因为它在单个线程上运行,可能无法完全利用多个CPU核心。




2. 大文件上传/下载:Node.js可能不是处理大文件上传或下载的最具性能的选项,因为它的单线程特性可能会消耗大量内存。




3. 现有基础架构和专业技能:考虑团队中现有的基础架构、资源和专业技能。如果您的团队在不同的服务器技术方面拥有丰富的经验,那么利用这些专业知识可能比引入新技术更有效。




4. 特定使用案例:服务器技术的性能可能因应用程序的特定要求而异。评估应用程序的需求至关重要,例如处理繁重的流量、数据库集成或与特定协议的集成,并相应地选择服务器技术。




总之,虽然Node.js为某些用例提供了高性能,但在确定Node.js是否是服务器应用程序最具性能的选择之前,评估您的特定需求、工作负载特征和团队的专业知识是很重要的。

点赞 0
浏览 9.1k