V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fengfisher
V2EX  ›  Linux

游戏在线到 1000 人左右,就无法再登录了。连接的时候提示无法连接。

  •  
  •   fengfisher · 2016-09-30 11:11:30 +08:00 · 4662 次点击
    这是一个创建于 2994 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统: 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 条附言  ·  2016-09-30 20:53:45 +08:00
    大家说的我都看了一下,现在让程序去看日志就是报 socket 的这样的错误:
    errno=2,errmsg=No such file or directory
    今天一直在查和重现(但没有重现出来),没时间来回复,谢谢大家。
    但现在还是没有完全定位到问题。
    第 2 条附言  ·  2017-05-02 10:51:38 +08:00
    最近又做了一次测试,后面发现是程序的问题。
    再次谢谢大家。
    32 条回复    2017-05-02 10:52:30 +08:00
    fanqsh123
        1
    fanqsh123  
       2016-09-30 11:27:44 +08:00
    有相关报错么? 比如服务端和客户端 socket 返回的错误码之类的?
    calease
        2
    calease  
       2016-09-30 11:39:45 +08:00
    看 syslog 有没有错误。我觉得是 max open file limit 。
    cherubzg
        3
    cherubzg  
       2016-09-30 11:45:33 +08:00
    话说你有没有看下,数据库连接数限制捏
    wangzhangwei
        4
    wangzhangwei  
       2016-09-30 11:47:22 +08:00
    有可能是网络问题
    cxlxkin
        5
    cxlxkin  
       2016-09-30 12:07:27 +08:00
    第一眼觉得是不是连接限制。。。。。
    21grams
        6
    21grams  
       2016-09-30 12:33:44 +08:00
    端口用光了?
    dxwwym
        7
    dxwwym  
       2016-09-30 12:40:08 +08:00 via iPhone
    想知道是什么游戏
    p2p
        8
    p2p  
       2016-09-30 12:50:32 +08:00 via iPhone
    明显是 open file limit
    firefox12
        9
    firefox12  
       2016-09-30 12:50:37 +08:00
    netstat -s
    alqaz
        10
    alqaz  
       2016-09-30 12:50:56 +08:00
    但最恶心的是,在测试服用机器人模拟登录,可以超过 1200 人以上,这个是不是说明还是线上服务器配置有问题?
    blackboar
        11
    blackboar  
       2016-09-30 15:02:48 +08:00
    外部和内部局域网分别测试端口是否能正常连接,以确认是系统配置性问题还是网络问题。

    如果是网络问题咨询下网络提供商是否上层有网络防火墙或者其他安全设备造成影响。
    ovear
        12
    ovear  
       2016-09-30 15:08:02 +08:00
    ulimit -a 看看 max open files
    okletswin
        13
    okletswin  
       2016-09-30 15:18:47 +08:00
    cat /proc/<pid>/limits 看看再说
    vus520
        14
    vus520  
       2016-09-30 15:22:53 +08:00
    有没有人能把 limit.conf 的调优好好讲讲,现在感觉一顿蒙逼
    jiangzhuo
        15
    jiangzhuo  
       2016-09-30 19:23:33 +08:00 via iPhone
    @vus520 这个运维比较懂,经验文档一大把,开发一般不太关心
    fengfisher
        16
    fengfisher  
    OP
       2016-09-30 20:42:15 +08:00
    @fanqsh123 返回了这个: errno=2,errmsg=No such file or directory
    fengfisher
        17
    fengfisher  
    OP
       2016-09-30 20:43:01 +08:00
    @calease 不是,这个也木有问题。查过了。 ulimit -n 为 65535
    fengfisher
        18
    fengfisher  
    OP
       2016-09-30 20:43:29 +08:00
    @cherubzg 数据库 OK ,连接数也是正常的。
    fengfisher
        19
    fengfisher  
    OP
       2016-09-30 20:43:44 +08:00
    @wangzhangwei 但不清楚是哪里的。。。
    fengfisher
        20
    fengfisher  
    OP
       2016-09-30 20:44:05 +08:00
    @cxlxkin 不是不是。
    fengfisher
        21
    fengfisher  
    OP
       2016-09-30 20:44:19 +08:00
    @21grams 怎么看端口有没有用光?
    fengfisher
        22
    fengfisher  
    OP
       2016-09-30 20:44:32 +08:00
    @dxwwym 呃,一个小手游
    fengfisher
        23
    fengfisher  
    OP
       2016-09-30 20:44:46 +08:00
    @p2p 不是不是。
    fengfisher
        24
    fengfisher  
    OP
       2016-09-30 20:45:32 +08:00
    @alqaz 两个机器配置是一样的。都一套脚本初始化的。
    fengfisher
        25
    fengfisher  
    OP
       2016-09-30 20:46:07 +08:00
    @okletswin 这个也看了,也是正常的。
    fengfisher
        26
    fengfisher  
    OP
       2016-09-30 20:46:35 +08:00
    @blackboar 确认了不是网络的问题,是云服务器,已连进来有游戏了,但就是会突然又断开这样。
    tinybaby365
        27
    tinybaby365  
       2016-09-30 22:15:19 +08:00   ❤️ 1
    试试 setrlimit ,需要 root 权限
    tinybaby365
        28
    tinybaby365  
       2016-09-30 22:23:18 +08:00   ❤️ 1
    之前做过单机 100w 的长链接实践,大概的经验是这样的:
    不使用 setrlimit ,单进程可以接收的连接数是突破不了 65K ,这个时候可以用多进程解决。主进程 listen , fork 出多个子进程 accept ,靠进程数来突破连接数限制。
    另一种使用 setrlimit ,但需要 root 权限。
    此外还要注意,整个系统总 fd 数的限制。
    mritd
        29
    mritd  
       2016-10-06 09:56:52 +08:00 via iPhone   ❤️ 1
    @calease 感觉一样😂😂😂
    wd85318
        30
    wd85318  
       2016-11-04 16:09:49 +08:00   ❤️ 1
    屁大点事,自己技术有问题,你这种技术我们今天有个群也讨论了,你早就会炒掉。
    fengfisher
        31
    fengfisher  
    OP
       2017-05-02 10:50:58 +08:00
    @tinybaby365 谢谢了,后面账号被降权了,没用这个号了。
    之前不久又做了一次测试,同样的报错,后面程序查了,是程序的问题。
    fengfisher
        32
    fengfisher  
    OP
       2017-05-02 10:52:30 +08:00
    @wd85318 嗯,我的技术很多方面还是很不足,确实有被炒掉的可能,现在也在努力学习提升中。谢谢大家了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   870 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.