免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2979 | 回复: 2
打印 上一主题 下一主题

select I/o模型的服务器阻塞怎么解决? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-18 19:08 |只看该作者 |倒序浏览
我要编写一个tcp中转器,实现一下功能:

1.实现一个tcp服务器,该服务器有若干个后端

2.该服务器作为前端接收客户端数据,并把客户端数据转发给后端,同时把后端发回的数据转发给客户 端,不需要对内容进行解析。

3.该服务器对后端的服务器进行监控,并剔除死去的后端,加入活过来的后端。

4.前端服务器可以采用轮询或基于源ip端口hash两种调度方法来来选择服务的后端服务器

采用select I/O模型,经过测试,发现服务器在遇到一些特殊情况很容易挂起,如
1)当前端服务器准备向某后端服务器发动连接请求时,该后端服务器网线突然断开
2)当前端服务器准备接受后端服务器发送的数据时,后端服务器网线突然断开等等

请问各位大侠,遇到这些特殊情况,服务器程序应该怎么设计才能尽早的发现并继续服务呢?

论坛徽章:
0
2 [报告]
发表于 2011-08-19 01:14 |只看该作者
1) socket unblocking 属性,设置TCP建立超时时间。
2)定义应用层的keepalive消息,300ms发1次,连续2次没有反应,说明链路或者对端服务器异常。

论坛徽章:
0
3 [报告]
发表于 2011-08-19 20:56 |只看该作者
1) socket unblocking 属性,设置TCP建立超时时间。
2)定义应用层的keepalive消息,300ms发1次,连续2次没 ...
ccaiben 发表于 2011-08-19 01:14


恩,谢谢,我采用了unpv2 P350面的非阻塞connect,可以解决第一个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP