做压力测试时,发现服务器性能还是很有问题,目前的瓶颈主要在两个地方:
1 mysql;服务器是8核cpu,压力大时mysql的cpu占用率达到100%左右,我的理解是把一个cpu占满了。
php-fpm-slow.log里面可以看到很多操作mysql的地方都超时了。
2 php本身;在一些复杂逻辑的操作,比如战斗,php本身执行时间就比较长,再加上mysql的延迟,叠加效果更明显。
于是考虑下一个版本服务器的作法,想法是把性能提升到一个绝对没有问题的高度,这样写逻辑时就不用畏首畏尾的,可以大幅度提升开发效率。
目前想到的方案是用mongoDB代理mysql,移除掉redis和memcache, 用lua代替php,这样对于非ARPG的web game来说应该说足够用了。
架构大概如下所示:
C++代理服务器 -----> C++游戏服务器 --> LUA 游戏逻辑 --> MongoDB
我打算把这个服务器放在google code上面,开源出来,对一些新手有所帮助。
由于公司项目已经使用了boost asio,为了不必要的麻烦,准备使用go 来代替c++,性能应该差别不大