8 个解决方案
#1
这么久都没有人回答,我还是靠自己把,准备重新写一个测试的主模块,监听完了之后,就一直接受包,不做其他任何的事情,看看会不会有这个情况,如果还是有的话,那就是nginx的问题了
#2
自己做了一个测试验证了一下,只收包,nginx还是收的很慢,recv-q还是会满,nginx为什么收流这么慢呢?难道是我哪里设置错了?rtmp模块都是可与转发流的啊
#3
配置文件只设置了一个port
#4
#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
#5
没人回答,好大的坑啊
#6
经过验证,由于是ET模式,EPOLLIN的触发次数没有客户端发送的次数多,所以导致缓冲区会一直累积,直到缓冲区慢,tcp window full。我用自己写的epoll ET 模式下的server都是可以很快收完的,不会有累积。所以关键原因还是ngx 收的慢,从触发EPOLLIN事件到调用recv回调函数经过了一段时间,不知道正不正确,为什么这么慢?
#7
解决了,还是跟自己收数据有关系,在ET模式下,就是要一直收,直到收不到为止
#8
我也遇到了你的问题,可以说具体点儿吗,怎样去解决