做壓力測試時,發現服務器性能還是很有問題,目前的瓶頸主要在兩個地方:
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++,性能應該差別不大