天才一秒记住【热天中文网】地址:https://www.rtzw.net
玻璃房里键盘声密集起来,像暴雨敲打铁皮屋顶。
每个人都在自己的终端上操作,关服务,调参数,杀进程。
但屏幕上的数字还在恶化:cpu99%,內存92%,资料库响应时间突破800毫秒。
凌晨一点四十七分,第一波玩家掉线。
世界聊天频道(还没关掉的部分)开始刷屏:
“卡死了!”
“动不了!”
“技能放不出来!”
“伺服器炸了?”
阿坤的手指在键盘上飞舞,调出资料库慢查询日誌。
日誌在疯狂滚动,每秒新增几百条。
他快速扫描,锁定一个查询:
select*fromplayer_itemswhereplayer_id=?anditem_typein(?,?,?,?,?,?,?,?,?,?)orderbycreated_atdesclimit50
“这个查询,”
他指著屏幕,“player_items表有千万级数据,item_type有十个可能值,索引是(player_id,item_type),但in查询让索引失效了。
全表扫描,每秒执行几千次,资料库不崩才怪。”
“谁写的?”
王磊问。
“我。”
陈默的声音从角落传来,很小,“物品系统我负责的。
我想一次查出玩家所有类型的物品,减少查询次数……”
“想法没错,但实现错了。”
阿坤快速改代码,“拆成十个查询,用union,或者用临时表。
但现在来不及了,先加forceindex强制走索引。”
他改完,部署。
三分钟后,资料库压力稍降,但cpu还是99%。
凌晨两点零八分,在线人数突破一万二。
伺服器开始出现周期性卡顿:每三十秒,帧率掉到5以下,持续五秒,然后恢復。
玩家骂得更凶了。
“是gc(垃圾回收)。”
张一鸣调出jvm监控,“老年代內存满了,每次fullgc要五秒。
我们的对象创建太频繁,特別是技能特效和伤害数字,每个都是独立对象,用完就丟。”
“用对象池。”
阿坤说,“但现在改不了,先加大堆內存。”
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!