在Client/Server应用服务器开发中,有时需要给UDP/TCP链接增加心跳消息,以便后台服务器能记录客户端的在线状态。
通常做法:
1.假定心跳时间 KeepaliveTime = 60 秒 ;
2.客户端启用定时器每过60秒钟向服务器发送心跳包,服务器收到心跳包后给客户端,更新心跳计时器信息并给客户端回复心跳确认包 ;
3.客户端设定一个超时时间,比如在3秒内未收到确认包,则重新发送该心跳包。收到确认包后,更新客户端计时器信息,跳转到2 。
优化方法:
1.假定心跳时间 KeepaliveTime = 60 秒 ;
2.客户端启用定时器每过60秒钟向服务器发送心跳包,服务器收到心跳包后给客户端,更新心跳计时器信息并给客户端回复心跳确认包 ;
3.客户端如果在向应用服务器发送心跳包之前收到服务器的其他应用协议数据包,此时重置计时器,重新开始计时 ;
4.客户端设定一个超时时间,比如在3秒内未收到确认包,则重新发送该心跳包。收到确认包后,重置客户端计时器信息,跳转到2 。
总结:
优点: 当应用服务器有几十万甚至上百万的同时在线用户时,心跳包占整个客户端和服务器端通信协议比重会比较高。因此,通过减少客户端向服务器端发送心跳包的数量可以有效的降低应用服务器端得负载,节省更多的带宽和CPU资源。
缺点:延迟服务器端发现客户端下线的时间。
P2P点播系统性能优化(2): 减少客户端的心跳包
最新推荐文章于 2024-03-21 02:40:03 发布