我试图理解为什么连接有时会挂起,而有时它们会很快失败。
curl -v amazon.com:1234
> curl: (7) Failed to connect to amazon.com port 1234: Connection refused
curl -v google.com:1234
* Trying 172.217.25.78...
* TCP_NODELAY set
hangs ...
到 amazon 的第一次 curl 很快失败,错误代码为 7。但第二次到 google 的 curl 一直挂着。这只是一个例子。
我知道我可以在连接到外部服务时设置超时,但我想更多地了解连接何时挂起与快速失败。
快速失败的连接不会导致问题,问题在于那些挂起的连接。如果我有一个 Web 服务器,并且我调用外部 API 或连接到 DB 或 redis 实例,并且连接挂起,它会在服务器上积累大量请求并挂起整个 Web 服务器。
我知道可能导致连接挂起或延迟的网络问题,但是否有一些我可以参考的列表,例如连接何时挂起与快速失败?