关于大数据量阻塞式发送卡住的解决方法
来源:互联网 发布:win8 java 编辑:程序博客网 时间:2024/06/05 09:34
最近做一个服务器间的通讯
通讯客户端使用阻塞方式发送数据,发送频率较低时,一切正常。
但是频率提高后就会导致send函数长时间保持阻塞状态。
接收端服务器采用epoll模型,接收缓冲区设成了0。
研究好了好几天没有答案,经过各种尝试之后发现,把接收缓冲区设成非零(我是取消了缓冲区大小设定,使用默认值)之后send函数不会再被阻塞。
原因推测:
服务端接收到第一个数据后要对数据做处理,此时因为接收缓冲区为0,客户端发来的数据无法存储,因此客户端阻塞。
接收到的数据要压入逻辑层的消息队列,需要加锁处理,更加耗时。
再者客户端发来的数据包不应定是完整的,可能只有一部分,此时服务端收到数据不能处理,而服务器同时也要做消息发送操作。因此会出现服务器接收一条完整数据对应发送好几条数据出去。
虽然发送数据量较大,但是客户端卡住好几秒钟的状况却无法解释。
- 关于大数据量阻塞式发送卡住的解决方法
- TCP send 发送大数据量的问题
- ORACLE大数据量下的分页解决方法
- ORACLE大数据量下的分页解决方法
- ORACLE大数据量下的分页解决方法
- 大数据量下的分页解决方法
- 大数据量下的分页解决方法
- ORACLE大数据量下的分页解决方法
- 大数据量下的分页解决方法
- 阻塞和非阻塞套接字一次可以发送多大的数据量
- 关于hibernate的大数据量的处理
- 关于大数据量模糊查询的方法
- 关于大数据量的处理思路
- 关于大数据量的GP服务实现
- 关于大数据量的数据库设计问题
- 关于ActiveMQ大数据量时的无能为力
- yum卡住/rpm -qa卡住的解决方法
- 关于大数据量测试
- 学习JAVA第二天。
- 【Android游戏开发之二】剖析游戏开发用view还是surfaceView ?!
- ION原理分析
- 计算器小程序
- ksvcreate: Process(m000) creation failed
- 关于大数据量阻塞式发送卡住的解决方法
- WebBrowser判断页面是否下载结束
- Rs.recordcount=-1的解决办法
- setsockopt
- ubuntu增加截图工具
- static方法不能被继承
- DWR介绍和使用
- Webbrowser新开窗口事件
- [翻译][php扩展开发和嵌入式]第6章-返回值