accept死循环
来源:互联网 发布:海康视频服务器软件 编辑:程序博客网 时间:2024/06/08 00:46
场景:一个多线程服务器,每个线程执行一个事件循环。在事件循环开始前,调用 socket/bind/listen 监听端口,然后将监听句柄(fd)添加到 epoll,然后开始事件循环,执行 epoll_wait。epoll_wait 返回有效事件时,对于监听事件,调用 accept 建立新连接,将该连接句柄添加到 epoll;对于普通连接,调用 read/write 进行网络 IO 及其他处理逻辑。
现象:服务器进程 CPU 占用彪高,几乎每个事件循环都在 accept,客户端出现超时。
原因:ulimit -n 为 65535, 进程打开的 fd 已经超过该数值,导致 accept 时无法取得 fd 而失败,而此时 TCP 连接的三次握手已经建立。又因为 epoll 使用的 LT 触发模式,该连接事件会不停地由 epoll 上报,于是产生了所谓的『死循环』,其实是事件循环闲不下来了,即使没有实际的 网络 IO。
现象:服务器进程 CPU 占用彪高,几乎每个事件循环都在 accept,客户端出现超时。
原因:ulimit -n 为 65535, 进程打开的 fd 已经超过该数值,导致 accept 时无法取得 fd 而失败,而此时 TCP 连接的三次握手已经建立。又因为 epoll 使用的 LT 触发模式,该连接事件会不停地由 epoll 上报,于是产生了所谓的『死循环』,其实是事件循环闲不下来了,即使没有实际的 网络 IO。
0 0
- accept死循环
- 网络通信之--accept死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环
- 死循环????
- 经典的死循环
- 传说中的死循环:
- 许三多的死循环
- 又见死循环
- 死循环的debug
- 队列的数组实现
- 大数加法
- OpenCV写float型Mat入硬盘
- 使用jQuery查找元素的方法
- setsockopt()函数使用详解
- accept死循环
- Mysql自动备份策略总结
- gcc编译选项
- 编程思想
- 安卓自定义view实现彩票刮刮卡效果
- 彻底理解webservice ,SOAP, WSDL
- iptables 里 recent 模块的用法
- HashMap实现原理
- HBase 客户端通过Java访问集群