当前位置:  技术问答>linux和unix

关于epoll的一个怪问题,求救

    来源: 互联网  发布时间:2015-11-08

    本文导语:  使用linux2。6内核的通讯程序,epoll机制,一般情况下还算正常,但是当压力增大的时候出现了一个奇怪的问题:连接建立后,服务器收到一个客户端的包,然后给客户端一个应答,部分连接出现服务器端突然收到一个...

使用linux2。6内核的通讯程序,epoll机制,一般情况下还算正常,但是当压力增大的时候出现了一个奇怪的问题:连接建立后,服务器收到一个客户端的包,然后给客户端一个应答,部分连接出现服务器端突然收到一个EPOLLHUP|EPOLLERR|EPOLLIN信号,查看网络连接(netstate)还存在,客户端也没有收到这个应答,不得不把这个信号当作连接断开处理。这个时候抓包也没有发觉网络上有任何网络事件发生,客户端(windows)也不能探测到连接异常,所以怀疑这个信号是误报,或是epoll使用不当造成,请各位高手加以指点,不胜感激!!!

|
描述符是阻塞还是非阻塞的?
去掉EPOLLET试试。

|
信号?事件吧。
如何用的?按理说这时不需要中断连接的。

|
不行?
我能想到的:
1、发生错误时,取socket的SO_ERROR看看?
2、描述符的使用,有没有竞争问题?
3、连接还在?是ESTABLISHED状态吗?
4、客户端是否已经发送了FIN?也就是说连接是否处于单向了?不知道你是什么应用,什么协议,会不会出现这种情况?
5、是随机发生的吗?与client有没有关联关系?
6、发生问题时报EPOLLIN,能读出数据吗?

|
:)
给客户端应答时有没有检测返回值?也是用的非阻塞方式?

|
这个时候系统的errno=4, EINTR,意思是被系统中断
===
哪个时候?epoll_wait返回-1了?如果不是,epoll_wait返回值是什么?这时的errno没有意义。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • epoll中epoll_event结构体的含义
  • 第一次用epoll就傻眼,程序报create_epoll error Function not implemented
  • 为Qt添加epoll的高性能I/O复用 qt_eventdispatcher_epoll
  • 请问: 当服务器采用epoll 时,客户端连不上,但若服务器端不用epoll时,也连上并发消息,这是为什么啊
  • epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event)为何老返回-1
  • epoll 退出
  • 关于epoll的几个疑问
  • 有人碰到过epoll丢信号吗
  • epoll模型如何限制最大连接数
  • python实现Linux异步epoll代码
  • epoll多路复用模型的疑惑,请高手解答
  • epoll,socket超时如何设置?
  • linux并发服务器中epoll+多线程分别怎么理解?
  • 关于epoll的链接库
  • 谁能解释一下epoll、libevent、zeroMQ的区别?
  • epoll 丢事件
  • 我已经升级内核到2.6,但是为什么还是不能用epoll?
  • int epoll_create(int size) size参数的含义
  • 使用 epoll或poll ,如何确定 与客户端的链接断开 ?
  • 最近在看EPOLL。。。。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3