首页 > 其他 > 详细

Epoll 连接无响应或响应时间过长

时间:2014-03-05 19:50:51      阅读:567      评论:0      收藏:0      [点我收藏+]

Epoll有两种模式,LT模式 与 ET模式。默认情况下是LT模式,由于ET模式在高并发,高流量的情况下,处理效率会高于ET模式,所以也就采用了ET模式。

服务器一直运行良好,跑几千机器人也没有什么问题。但突然之间发现,机器人在反复掉线上线的测试后,会出现一种情况:服务器端会再也收不到客户端的连接事件,或者这个连接事件响应会非常慢,而已连接成功的fd读写数据是没有任何问题的。

我不知道是不是只有我才遇到了这个问题,网上也没有能找到相关其它人给出的解决办法。


最后的解决办法大概如下,如果没有遇到问题的则不用了,难道只有我才遇到这个问题吗:


bind(listenfd,(sockaddr *)&serveraddr, sizeof(serveraddr));
listen(listenfd, LISTENQ);
ev.data.fd=listenfd;
//ev.events=EPOLLIN|EPOLLET;
ev.events=EPOLLIN;//监听的FD 用默认的EPOLLLT模式

if(events[i].data.fd==listenfd)   //如果新监测到一个SOCKET用户连接到了绑定的SOCKET端口,建立新的连接。
   {
        connfd = accept(listenfd,(sockaddr *)&clientaddr, &clilen);
        if(connfd<0){
             perror("connfd<0");
             return (1);
         }
         
       setnonblocking(connfd);
       ev.data.fd=connfd;

       //ev.events=EPOLLIN | EPOLLET;
       ev.events=EPOLLIN;//这里也用默认的EPOLLLT模式

       epoll_ctl(epfd,EPOLL_CTL_ADD,connfd,&ev);
     }


Epoll 连接无响应或响应时间过长,布布扣,bubuko.com

Epoll 连接无响应或响应时间过长

原文:http://blog.csdn.net/aizquan/article/details/20543747

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!