nginx的事件处理函数ngx_process_events_and_timers,linux上最终会调用 ngx_epoll_process_events。
之后epoll_wait 后得到相应的事件,再做相应的处理,即监听与处理是在同一个线程中处理的,这样会有几个问题:
1.如果有多个事件,必须等待上一个事件处理完毕才能处理下一个。
2.同一个connection,只能按”接收-发送-接收-发送“这样的顺序进行,而不能实现真正的双工。
另外,ngx_epoll_add_event/ngx_epoll_add_connection函数已经限制一个进程能只能一个接收处理线程,而只能采取多进程的方式。
对于流媒体协议的处理,以上明显是瓶颈。
流媒体协议处理瓶颈与改进策略
本文探讨了使用nginx的事件处理函数ngx_process_events_and_timers在Linux系统上处理流媒体协议时遇到的瓶颈,特别是针对单线程处理导致的事件处理顺序问题和连接双工能力受限。同时,提出了通过多进程方式来解决这些问题的方法,以提高流媒体协议的处理效率。
2192

被折叠的 条评论
为什么被折叠?



