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