如http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive中所述
应特别注意的是,keepalive指令不会限制Nginx工作进程可以打开的上游服务器的连接总数。 连接参数应设置为足够小的数量以允许上游服务器处理新的传入连接。
我想了解一个新的客户端是否来了,为什么他们不能使用现有的保持连接?
Nginx是否需要在每次新客户端时都与上游build立新的连接?
我认为这意味着如果有更多的请求进来,而不是可用的保持连接的数量,那么新的请求仍然会被打开。
另外,请注意前面的句子,你从http://nginx.org/r/keepalive引用的那句话:
connections参数设置保留在每个辅助进程的caching中的上游服务器的空闲保持连接的最大数量。 当这个数字被超过时,最近最less使用的连接被closures。
注意“每个工人进程”部分。 我想可以想象,如果一个连接(有一个新的客户端请求)进入一个工作进程,这个进程已经超过了与给定服务器的keepalive连接数量,那么即使其他工作者仍然打开新的连接进程仍然有一些保持连接的同一上游服务器仍然空闲。
如果您需要更多的细节,可能需要深入挖掘ngx_http_upstream_keepalive_module.c 。