halleyzhang 发表于 2010-4-29 12:39:35

原因找到,是因为客户端发送速率不是均衡的,有时瞬间发送的数据太多(约100k的数据拆成小包后在一个循环里连续发送),服务器端来不及转发缓冲区就满了,把服务器端缓冲区增大,试验一下ok。但这只是试验,最终的解决方法以下哪种好呢?
1、客户端发送数据时稍作延迟,每发送一个小包sleep一下。这似乎会影响效率,但如果服务器端来不及处理,发快了也没用
2、增大服务器端的缓冲,但要设得很大,考虑到同时在线人数和每个用户处于峰值状态的概率,可能要100M左右,这样对效率会有影响吗?

wishel 发表于 2010-4-29 15:13:44

个人意见,同样开发成本的前提下,控制速率均衡比增大缓冲更好一些,缓冲需要有,但不宜过大。

halleyzhang 发表于 2010-5-4 19:06:54

同意。经过考虑决定还是要加一个缓冲区,一个线程制造数据放到缓冲区里,另一个线程用高精度的定时器控制发送速度,均匀地从缓冲区取数据发送。如果发现缓冲区里积压了太多数据,就把较早的数据扔掉。
这个方法虽然麻烦,但也算满意了。谢谢大家的帮助
页: 1 [2]
查看完整版本: 127.0.0.1受网络状况影响吗