系统: centos 6.5 64 位 游戏语言: lua & C++
问题表现: 游戏在线到 1000 人左右,就无法再登录了。连接的时候提示无法连接 然后,游戏对应的端口,例如是 10000 ,在 zabbix 下会报警端口连不上,但实际用 netstat -plnt |grep 10000 是可以看到端口和进程的。 zabbix 的端口检测机制如下: nc -z -w 2 127.0.0.1 10000 如果$?返回不为 0 ,则报警说连不上了。 PS: 但最恶心的是,在测试服用机器人模拟登录,可以超过 1200 人以上。。.
已检查过的配置: 游戏内存, CPU ,网络都足够,没有瓶颈
/etc/security/limits.conf /etc/security/limits.d/90-nproc.conf /etc/sysctl.conf --也已检查 fs.file-max = 180000
用来设定整体 TCP 内存的整体使用状况 net.ipv4.tcp_mem = 94500000 915000000 927000000
TCP 连接上的读缓存上限 net.ipv4.tcp_rmem = 10240 87380 12582912
TCP 连接上的写缓存上限 net.ipv4.tcp_wmem = 10240 87380 12582912
发送套接字缓冲区大小的默认值(以字节为单位 net.core.wmem_default = 8388608
接收套接字缓冲区大小的默认值(以字节为单位) net.core.rmem_default = 8388608
接收套接字缓冲区大小的最大值 net.core.rmem_max = 16777216
发送套接字缓冲区大小的最大值 net.core.wmem_max = 16777216 ulimit 也已修改:
求问:到底还有哪里的系统配置问题导致游戏端口连不上呢? 而且,确认是系统的问题,游戏配置是 OK 的。
![]() | 1 fanqsh123 2016-09-30 11:27:44 +08:00 有相关报错么? 比如服务端和客户端 socket 返回的错误码之类的? |
2 calease 2016-09-30 11:39:45 +08:00 看 syslog 有没有错误。我觉得是 max open file limit 。 |
![]() | 3 cherubzg 2016-09-30 11:45:33 +08:00 话说你有没有看下,数据库连接数限制捏 |
![]() | 4 wangzhangwei 2016-09-30 11:47:22 +08:00 有可能是网络问题 |
![]() | 5 cxlxkin 2016-09-30 12:07:27 +08:00 第一眼觉得是不是连接限制。。。。。 |
![]() | 6 21grams 2016-09-30 12:33:44 +08:00 端口用光了? |
7 dxwwym 2016-09-30 12:40:08 +08:00 via iPhone 想知道是什么游戏 |
![]() | 8 p2p 2016-09-30 12:50:32 +08:00 via iPhone 明显是 open file limit |
9 firefox12 2016-09-30 12:50:37 +08:00 netstat -s |
10 alqaz 2016-09-30 12:50:56 +08:00 但最恶心的是,在测试服用机器人模拟登录,可以超过 1200 人以上,这个是不是说明还是线上服务器配置有问题? |
![]() | 11 blackboar 2016-09-30 15:02:48 +08:00 外部和内部局域网分别测试端口是否能正常连接,以确认是系统配置性问题还是网络问题。 如果是网络问题咨询下网络提供商是否上层有网络防火墙或者其他安全设备造成影响。 |
![]() | 12 ovear 2016-09-30 15:08:02 +08:00 ulimit -a 看看 max open files |
![]() | 13 okletswin 2016-09-30 15:18:47 +08:00 cat /proc/<pid>/limits 看看再说 |
![]() | 14 vus520 2016-09-30 15:22:53 +08:00 有没有人能把 limit.conf 的调优好好讲讲,现在感觉一顿蒙逼 |
![]() | 16 fengfisher OP @fanqsh123 返回了这个: errno=2,errmsg=No such file or directory |
![]() | 17 fengfisher OP @calease 不是,这个也木有问题。查过了。 ulimit -n 为 65535 |
![]() | 18 fengfisher OP @cherubzg 数据库 OK ,连接数也是正常的。 |
![]() | 19 fengfisher OP @wangzhangwei 但不清楚是哪里的。。。 |
![]() | 20 fengfisher OP @cxlxkin 不是不是。 |
![]() | 21 fengfisher OP @21grams 怎么看端口有没有用光? |
![]() | 22 fengfisher OP @dxwwym 呃,一个小手游 |
![]() | 23 fengfisher OP @p2p 不是不是。 |
![]() | 24 fengfisher OP @alqaz 两个机器配置是一样的。都一套脚本初始化的。 |
![]() | 25 fengfisher OP @okletswin 这个也看了,也是正常的。 |
![]() | 26 fengfisher OP @blackboar 确认了不是网络的问题,是云服务器,已连进来有游戏了,但就是会突然又断开这样。 |
![]() | 27 tinybaby365 2016-09-30 22:15:19 +08:00 ![]() 试试 setrlimit ,需要 root 权限 |
![]() | 28 tinybaby365 2016-09-30 22:23:18 +08:00 ![]() 之前做过单机 100w 的长链接实践,大概的经验这样的: 不使用 setrlimit ,单进程可以接收的连接数是突破不了 65K ,这个时候可以用多进程解决。主进程 listen , fork 出多个子进程 accept ,靠进程数来突破连接数限制。 另一种使用 setrlimit ,但需要 root 权限。 此外还要注意,整个系统总 fd 数的限制。 |
![]() | 30 wd85318 2016-11-04 16:09:49 +08:00 ![]() 屁大点事,自己技术有问题,你这种技术我们今天有个群也讨论了,你早就会炒掉。 |
![]() | 31 fengfisher OP @tinybaby365 谢谢了,后面账号被降权了,没用这个号了。 之前不久又做了一次测试,同样的报错,后面程序查了,是程序的问题。 |
![]() | 32 fengfisher OP @wd85318 嗯,我的技术很多方面还是很不足,确实有被炒掉的可能,现在也在努力学习提升中。谢谢大家了。 |