nginx-upsync-module icon indicating copy to clipboard operation
nginx-upsync-module copied to clipboard

ngx_http_client_conn interrupted by signal

Open bluestn opened this issue 8 years ago • 1 comments

当nginx-upsync-module起来的时候,采用了原生的socket来连接consul服务器获取upstream的列表, 我碰到一个问题,在调用 connect(client->sd, (struct sockaddr *)&(client->addr), sizeof(struct sockaddr))

的时候,如果在nginx的配置里面开了timer_resolution 10ms,会导致connect经常被signal打断,导致启动的时候connect一直失败,后来看了一下代码,包括recv和send的代码也会碰到这个问题。

建议还是要判断一下connect返回-1的时候,检查一下ngx_errno判断是不是EINTR,然后,用select等待connect是否最终完成。

bluestn avatar Jan 11 '17 10:01 bluestn

启动时是用的原生的,启动之时正好碰到中断是概率事件,即使重试两次也是没关系;

之后是用的nginx 提供的接口,目前了解还好,我再了解一下,感谢!

xiaokai-wang avatar Jan 11 '17 11:01 xiaokai-wang