clangcn/game-server

是否可以考虑使用systemd来管理

leochien0102 opened this issue · 0 comments

如题,近期在Google Cloud上(系统是CentOS 7.4)部署Game-Server,发现日志中大量i/o timeout,经查,可能是系统打开最大文件数造成的,默认是1024。

$ ps -ef | grep game-server
root      1391     1  0 14:57 pts/0    00:00:00 /usr/local/game-server/game-server -c /usr/local/game-server/config.json
$ cat /proc/1391/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             7912                 7912                 processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       7912                 7912                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

同样部署的Shadowsocksr服务获得的信息是
Max open files 512000 512000 files

修改 /etc/systemd/system.conf
去掉注释,并设置DefaultLimitNOFILE=10240,保存退出,重启服务器

获得game-server进程信息是
Max open files 10240 10240 files
运行一段时间,都没再出现过i/o timeout

不过此处有个疑问,/etc/systemd/system.conf 理论上是为systemd服务的,而game-server的启动是在/etc/init.d下,为什么修改/etc/systemd/system.conf 会对game-server起作用?

如果采用systemd来做服务,可以service中直接用LimitNOFILE=来设定,是不是会更方便一些。

以上是新人的一些困惑,有差错的地方,望指正。