Hi:
> 恩,谢谢你,理解了。
> 还有就是我这个用例会不会有潜在的问题,即:我先用一个 socket 连接了 80 端口,然后把它放入到连接池
>
> 紧接着我又继续用这个 socket 连接 8989 端口,但是假如此时,有其他的请求需要取出连接池的 80 连接,
你可以去读一下 ngx_lua-x.x.x/src/ngx_http_lua_socket_tcp.c里面的代码,ngx_http_lua_socket_tcp_connect实现了ngx.socket.connect,ngx_http_lua_socket_tcp_setkeepalive实现了ngx.socket.setkeepalive。如果我对这里面的代码没有理解错的话,connect过程是先根据连接的IP和PORT选择连接池,从连接池中拿出一个连接(如果连接池为空,再去建立新连接)。所以,如果你在lua代码中connect的ip和port不一样的话,选择的内建连接池是不一样的。
> 而我却正在用这个 socket 建立 8989 连接,那么这个时候,会不会有同时读的问题?也就是连接池中的连接是否安全?
>
nginx的worker进程是单线程,所以不会出现你所说的同时读写的并发安全的问题