一次线上异常的追踪与处理

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

5月31日晚,游戏玩家反馈请求超时问题,服务器连接池不足导致内存溢出,服务宕机。解决方案是增加连接池大小和优化性能,对大表进行分表处理,异步插入消息,优化消息保存数量,进行空间优化和碎片清理,减小表空间占用。经验教训是避免性能消耗过大,防止请求堆积和内存溢出。

🎯

关键要点

  • 5月31日晚,玩家反馈请求超时,服务器连接池不足导致内存溢出。
  • 请求超时的错误为408,表示服务器关闭未使用的连接。
  • 日志检查发现两个pod宕机,原因是JDBC连接异常和内存溢出。
  • 未设置连接池上限,导致请求排队和内存溢出。
  • 解决方案是增加Hikari连接池大小,调整数据库连接配置。
  • 性能优化是关键,服务对数据库请求处理过慢导致阻塞。
  • 对聊天记录进行分表处理,使用异步插入消息以节省资源。
  • 优化消息保存数量,减少存储空间占用。
  • 进行空间优化和碎片清理,表空间占用缩小40%。
  • 经验教训是避免性能消耗过大,防止请求堆积和内存溢出。
➡️

继续阅读