ps:个人随手记录,个人使用
1:压测接口,高并发下发生OOM,线程减少,占用内存会慢慢降下去。
分析:内存能降下去,说明可以被GC,经过排查没有发现有什么地方发生泄露,但是代码冗余对象较多,然后经过优化代码,减少对象的创建,抽离方法,减少重复创建,最后优化后,内存没有发生飙升的情况,性能翻倍,TPS吞吐量正常1500
2:线上发生生产事故,一个涉及到insert的查询接口一直报错,无法正常使用
经过排查,发现有大量的锁表,是数据表锁死的原因,临时切换生产环境,重启数据库,将环境切回来后正常,问题源头,未找到。
3:线上查询会有长时间查询,比较规律,时间在32000~32100、64000~6500、132000~131000这样子,经过自己调用,skywaling排查发现,代码响应很快,在20左右,问题出现在代码内部,远程调用三方接口这里,自己的httpclient设置的连接超时时间是130秒,时间太久,时间浪费在了TCP建立连接这里,而且重连次数是5次,每次TCP重连的等待时间是2的N次幂,因此调整连接超时时间,修改重连次数,如果TCP建立连接失败,不让它一直重试,直接重新建立连接。
浪费时间是在TCP握手的时候失败,不确定具体是在哪一次握手
不好的是,会降低性能,但是能保证线上的正常使用,高并发的时候不建议
最后解决的是三方接口进行了调整
4:高并发出现超卖的情况,利用redis的increment单线程属性去控制