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

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

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

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

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

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

  • 相关阅读:
    入职外包一个月的感受!(读者投稿)
    作为架构风格的 REST 到底是什么
    PHP基础之查找
    PHP基础之排序
    PHP入门之数组
    PHP入门之函数
    PHP入门之流程控制
    PHP入门之类型与运算符
    DC-1靶机实战和分析
    【基础算法】 状态压缩DP---蒙德里安的梦想
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/many_client_drop_connection_at_the_same_time.html
Copyright © 2011-2022 走看看