为什么spawn-fcgi 会阻塞在请求入口函数FCGI_Accept()中的read函数?

背景:使用c++ nginx spawn-fcgi 开发微信和小程序的后台web 服务器,两个插件spawn-fcgi-1.6.4,fcgi-2.4.0,因为功能简单,微信和小程序的请求共用一个ip和端口,用到开发组件mysql和redis,rabbitmq

问题详述:隔几天公众号服务器就卡住不能用,我用的单进程单线程,用gdb attach 进程,发现程序卡在服务器http请求入口函数FCGI_Accept()里面的read()函数,读阻塞了?因为这个read函数是在fcgi-2.4.0库函数里面的,底层好像是用select做的,对底层不是很熟悉,用netstat 命令,有很多close-wait,根据tcp原理,大致原因是客户端关闭连接,而我服务器没有关闭连接导致,但是让我困惑的是,如果是我业务代码没有关闭连接,程序为什么会卡在服务器http请求入口函数FCGI_Accept()里面的read()函数,什么原因会导致出现这种情况,有没有办法复现??

能提供思路帮我解决的,奖励就给

博文链接,如有帮助,请采纳一下,谢谢,

https://blog.csdn.net/liangwenhao1108/article/details/109240540

 

https://www.jianshu.com/p/c8d65fb1941d

 

http://blog.chinaunix.net/uid-380521-id-2412485.html

 

https://www.cnblogs.com/lchb/articles/2797812.html

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。