今天,对服务器简单做了压力反馈给老大
总共有5台机器可用。分别在4台机器上各开了一个client进程,在1台机器上开了一个server进程。
在当前项目框架的基础上,用了一点技巧,可以使每一个client都支持开N个socket连接到server上。这样可以模拟出大量个客户端跟server通信。
每个socket连接,平均每秒发送一条协议给server。200, 400, 600个socket连接不断加上去,通过top观察,CPU占用率就不断上去了
当总数为800个socket连接时,server所在的机器,CPU达到了80%~90%,平均每秒发送一条协议,10秒就8000条了。那么一秒内,理想情况下,server要1秒内把800个事件处理完,并且最好1毫秒要处理一个。但目前的情况,是不可能。一般处理一条协议,需要1至2毫秒,甚至有部分10毫秒级别的。处理不及时产生的后果是延时,并且随着client不断发协议,后面延时越严重。
不过还好,现实中,并不是每个socket连接会平均一秒发一条协议给server处理这么频繁。我想这游戏服应该能支持1000人同时在线。再多就不好说了
oh, my god
----更新--20130803-------
在微博上看到这个例子,YouPorn网,每秒处理30万个页面请求。
http://weibo.com/p/1005051355610915/weibo?from=page_100505&wvr=5&mod=headweibo
要做出高性能的服务器,功力得要很深厚
-------------------2013-09-04-----------------------
当对MySQL异步更新后,性能好很多
世界频道的聊天也是占性能的大块。平时看到文章也有说,像聊天这种与游戏逻辑无关的,另开一个进程作为聊天服务器,专门处理聊天
经测试,print这个打印函数,需要消耗15至20微秒。日志打得多,会影响性能。可以规划好,封装出调试、警告、错误的print。或者使用开源的日志库,比如google的Glog