zoukankan      html  css  js  c++  java
  • 大面积断线原因分析

    昨天,在台服上运行的服务器爆发了大面积断线。从时间点上看,跟一个副本活动高度重合,因此,今天早上就紧急屏蔽了该活动模块。

    拿到log进行分析,看到的异常大部分是从战斗副本返回主城时发生的。副本活动产生的异常倒是没有看到,而且这个副本在国内也经历过几个运营商实际运营的测试,出现问题的机会应该比较少。

    从战斗副本返回主城的过程经过一次调整,原有的流程是副本退出时保存到mysql,再在主城里从数据库恢复过来。现有的流程,是先把所需数据打包,然后通过tcp发送到主城,由主城进行解包并恢复到角色身上。

    个人猜测,是因为序列化过程有性能问题,导致序列化过程缓慢。这个副本活动有个特点,就是同时返回主城的角色会比较多。因此,当多个角色同时返回时,主城进程就会因为序列化而卡住。客户端与主城间有保持心跳连接,当发生心跳包超时,客户端就自动断开连接。断开连接后,需要将角色数据保存至数据库,这无疑加重了主城进程的负担。于是,雪崩效应就形成了。

    下午,主程发布了修复,是序列化过程里,用于标识序列化属性的列表不断增长导致的。于是,每次检查属性是否需要序列化的时候,都要遍历一个极长的列表,所以极为缓慢。问题解决

  • 相关阅读:
    CSS盒子模型
    CSS
    html基础
    浅谈三层架构
    mysql更改表结构:添加、删除、修改字段、调整字段顺序
    类的高级概念
    无锁版以时间为GUID的方法
    以当前时间作为GUID的方法
    关于客户定制化软件的探讨
    关于敏捷的一点想法
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/many_client_drop_connection_at_the_same_time.html
Copyright © 2011-2022 走看看