背景:使用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()函数,什么原因会导致出现这种情况,有没有办法复现??
能提供思路帮我解决的,奖励就给