线上问题:所有用户页面无法打开
- 1 线上问题
- 2 问题处理
- 3 复盘
- 3.1 第二天观察
1 线上问题
上午进入工作时间,Cat告警出现大量linda接口超时Exception。
随后,产品和运营反馈无法打开页面,前线用户大量反馈无法打开页面。
2 问题处理
2.1 由于出现了linda告警,所以马上到linda平台查看了接口监控信息,发现从上午11点07分开始,接口最大RT达到了30秒。
2.2 随后查看了系统的cpu的情况,发现有几台机器的cpu持续在60%以上运行。
与此同时,系统平均每秒出现20次young gc,young gc每分钟运行时间2.5秒。
同时平均每秒出现1次full gc,full gc每分钟运行时间达到10秒以上。
由于大量请求都集中在这几台机器上,因此由6台机器扩容到10台机器(扩容了4台)。5分钟后,产品的页面开始逐渐可以刷新了。
扩容机器后,该接口的95线响应RT从50秒降到了4秒。
3 复盘
下午又看了下上午linda接口的监控信息,发现该接口的另外2个服务的RT平均都在2秒左右,没有出现本服务平均最大RT30秒的情况。
结合当时出现的大量young gc和多次full gc,推测是进入工作时间(11点)后,请求都转发到对应几台服务器上,开始出现大量young gc,导致young gc运行时间增加。同时出现了full gc,导致gc时间更长,使得cpu持续升高,也导致了linda接口打点后显示RT较长。
所以当时对应的措施,应该是机器扩容+机器升配(cpu核数增加,内存增大)
3.1 第二天观察
第二天11点,观察机器由6台扩容到10台后的表现:
1)请求量和昨天基本一致:请求总量平均每秒10个,平均qps:2
2)95线RT:昨天平均40秒 --> 今天平均6秒
3)young gc次数:昨天平均每秒20次 --> 今天平均每秒5次
2)young gc时间:昨天平均2.5秒 --> 今天平均0.5秒
2)full gc时间:昨天平均10秒 --> 今天未发生full gc
2)cpu负载:昨天平均60% --> 今天平均60%