用nginx做转发私有协议的视频流,为什么recv-q会满呢?

时间:2020-12-08 15:56:09
用nginx做转发私有协议的视频流,我只做收流,没有做其他任何事情,为什么recv-q会满呢?感觉是nginx虽然是epoll模式,但是收包还是很慢

8 个解决方案

#1


这么久都没有人回答,我还是靠自己把,准备重新写一个测试的主模块,监听完了之后,就一直接受包,不做其他任何的事情,看看会不会有这个情况,如果还是有的话,那就是nginx的问题了

#2


自己做了一个测试验证了一下,只收包,nginx还是收的很慢,recv-q还是会满,nginx为什么收流这么慢呢?难道是我哪里设置错了?rtmp模块都是可与转发流的啊

#3


配置文件只设置了一个port

#4


该回复于2014-12-09 14:13:39被管理员删除

#5


没人回答,好大的坑啊

#6


经过验证,由于是ET模式,EPOLLIN的触发次数没有客户端发送的次数多,所以导致缓冲区会一直累积,直到缓冲区慢,tcp window full。我用自己写的epoll ET 模式下的server都是可以很快收完的,不会有累积。所以关键原因还是ngx 收的慢,从触发EPOLLIN事件到调用recv回调函数经过了一段时间,不知道正不正确,为什么这么慢?

#7


解决了,还是跟自己收数据有关系,在ET模式下,就是要一直收,直到收不到为止

#8


我也遇到了你的问题,可以说具体点儿吗,怎样去解决

#1


这么久都没有人回答,我还是靠自己把,准备重新写一个测试的主模块,监听完了之后,就一直接受包,不做其他任何的事情,看看会不会有这个情况,如果还是有的话,那就是nginx的问题了

#2


自己做了一个测试验证了一下,只收包,nginx还是收的很慢,recv-q还是会满,nginx为什么收流这么慢呢?难道是我哪里设置错了?rtmp模块都是可与转发流的啊

#3


配置文件只设置了一个port

#4


该回复于2014-12-09 14:13:39被管理员删除

#5


没人回答,好大的坑啊

#6


经过验证,由于是ET模式,EPOLLIN的触发次数没有客户端发送的次数多,所以导致缓冲区会一直累积,直到缓冲区慢,tcp window full。我用自己写的epoll ET 模式下的server都是可以很快收完的,不会有累积。所以关键原因还是ngx 收的慢,从触发EPOLLIN事件到调用recv回调函数经过了一段时间,不知道正不正确,为什么这么慢?

#7


解决了,还是跟自己收数据有关系,在ET模式下,就是要一直收,直到收不到为止

#8


我也遇到了你的问题,可以说具体点儿吗,怎样去解决