[英]Microservice architecture | Cannot assign requested address
我们具有微服务架构,其中来自公共(移动应用)的单个请求在内部导致对不同服务的4个HTTP调用。
我观察到的这一副作用之一是,在高负载下,我们开始遇到错误“无法分配请求的地址”。
运行netstat -tunp | wc -l
netstat -tunp | wc -l
显示计数约为60k,而通常徘徊在3k附近。
看来我快要用尽港口了。 我的应用程序是使用Apache HTTP Client用Java编写的。
解决此问题的最佳方法是什么? 我没有几个解决方案,但是我不确定它是否正确:
有任何想法吗?
有几个原因可能会耗尽可用的端口。 (为避免混淆,我将您面向用户的服务器称为“应用程序”。):
Connection: close
,或者您的应用程序不支持保持活动状态,则该应用程序将在每次请求后关闭TCP连接。 当TCP连接关闭时,关闭方进入TIME_WAIT进行2xMSL(请参阅RFC 1122第4.2.2.13节 )。 默认的MSL再次因操作系统而异,但是常见的默认值为30s。 这意味着应用程序将无法使用该端口与同一微服务通信60秒钟。 Connection: close
),它们将进入TIME_WAIT,您可能最终会在微服务侧耗尽端口。 解决端口耗尽问题的方法取决于上述情况。 这是我会尝试的方法:
我建议先从保持活动和连接池开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.