如果主accept监听的soctet
fd也设置为非阻塞,那么单纯靠epoll事件来驱动的 服务器模型会存在问题,并发压力下发现,每次accept只从系统中取得第一个,所以如果恰冯多个
连接同时触发 server
fd的EPOLLIN事件,在返回的event数组中体现不出来,会出现丢失事件的现象,所以当用ab等工具简单的压载就会发现每次都会有最后几条信息得
不到处理,原因就在于此,我现在的解决办法是将server fd的监听去掉,用一个线程阻塞监听,accept成功就处理检测client
fd也设置为非阻塞,那么单纯靠epoll事件来驱动的 服务器模型会存在问题,并发压力下发现,每次accept只从系统中取得第一个,所以如果恰冯多个
连接同时触发 server
fd的EPOLLIN事件,在返回的event数组中体现不出来,会出现丢失事件的现象,所以当用ab等工具简单的压载就会发现每次都会有最后几条信息得
不到处理,原因就在于此,我现在的解决办法是将server fd的监听去掉,用一个线程阻塞监听,accept成功就处理检测client
fd,然后在主线程循环监听client事件,这样epoll在边缘模式下出错的概率就小,测试表明效果明显
以上为网上的资料
//本人:1可以将fd设置为阻塞,并采用LT模式,就可以了
2.可以在Accept时用循环接受链接