u011287835
2021-06-16 18:15
采纳率: 0%
浏览 71

为什么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()函数,什么原因会导致出现这种情况,有没有办法复现??

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

  • 点赞
  • 收藏

2条回答 默认 最新

相关推荐