1. 我再确认下
2. 连接和cosocket对象一一对应,那么如果pool size是100,则同时只会有100个请求被处理,是这样吗?
On 3月30日, 下午4时13分, agentzh <agen...@gmail.com> wrote:
> On Fri, Mar 30, 2012 at 3:36 PM, Simon <bigp...@gmail.com> wrote:
> > 1. 一个进程只有一个长连接
> > set_keepalive(0, 100)
>
> > 用http_load 发起批量请求
>
> > ./http_load -parallel 10 -seconds 10 url -v
>
> > 查看netstat,发现只有一个EST,有几十个time_wait;keepalive不该保持这几十个连接吗?size=100的意思是不是最多
> > 会有100个EST状态的连接?
>
> 请在你的 Lua 代码中检查 tcpsock:setkeepalive() 方法调用的返回值和出错信息。当你的协议实现有 bug
> (比如你没有读完所有在 socket read buffer 中的数据时)或者当前连接出错时,ngx_lua cosocket 的
> setkeepalive 方法会拒绝把连接放入连接池。
>
> 如果一切正常,会保持 10 个左右的 EST 状态的连接。你可以通过 lua-resty-redis 等现有的库来确认这一点。
>
> 2. 如果有多个后端连接,一个lua脚本中的多次socket请求会发给一个相同的连接吗?
>
>
>
> 一个连接只会和一个 cosocket 对象绑定。它们是一一对应的,不会出现多个 cosocket 对象同时向一个连接写入或者读取的情形。
>
> 这个貌似是支持的,连接的时候选定了一个fd,春老师确认下?
>
> 没看懂你这句话的意思。
debug日志在建立连接时提示从连接池选了一个socket,fd:xx,后面都使用这个fd进行socket操作,所以我觉得是支持一个请求只会使
用一个连接。
>
> Regards,
> -agentzh