计划是把工作中遇到的一些典型的问题,做个问题总结,之前遇到的,找时间来写。
先把今天遇到的一个问题分析下
问题场景:
是项目中有一块的程序数据处理变慢了,而且,现象是中午有变慢,下午的时候,就会趋于正常。查看日志也没有发现出现错误。
过程分析:
程序流程:
问题分析:
现象是表2的数据插入很慢。
分析问题有两点可能出问题, 一个是在读取q1,做数据封装,数据逻辑处理给变慢了;
另外一个是在做删除表1的时候,删除的慢了;
最后分析的是排除了第一种原因,因为这一步简单,在实际中也就是服务器进行一下交互,服务器和网关都是足够健壮的。
定位在第二种情况,原因是删除表1 和 插入表2是个串行的操作。表1每天中午都会做大量的插入操作,在程序流程处理中也同时在做更新、删除的操作,对表的压力巨大,当删除操作变慢了,同样就影响了对表2的插入,导致插入表2的操作变慢,这样的后果,q2的队列存储容量也长时间处于饱和状态,存入Q2也随之延后,读取Q1,封装数据的逻辑处理也延后了,当然Q1的容量也饱和了,第一步的操作也变慢了。
最终的结果就是整个数据处理都变慢了。
解决办法:
a、将表1的删除和表2的插入进行异步操作
b、对表1的不做删除,将表1的删除做记录id的操作,每天晚上定时进行删除。