记录一次服务响应接口变慢的问题

接口原来调用只需要不到1s中,这两天开始变成了10s左右。

问题描述:

mysql部署在a服务器,redis在b服务器,项目部署在a服务器。刚部署时接口调用响应都很快,但是在部署几个小时之后,调用查询mysql逻辑很简单的接口调用都变成十几秒,但是调用查redis的接口就没变,一样很快。其他部署在a服务器的项目都没有变卡。  在项目中用到了线程池,用在了两个定时任务。

 

1、调用其他接口响应速度,发现只要是查询数据库的接口都变慢很多了。查询在另一个服务器的redis接口速度不变。  (那么就是mysql服务器的问题)

2、在服务器查看cpu占用率  发现算法的三个服务有问题。  通知算法解决    linux命令  top

 

3、后面还是有这个问题查询慢sql、网络以及jvm:

    在一个简单的查询接口业务逻辑层和控制层加入log日志时间     发现刚开始部署时mapper调用的方法在毫秒级别,在部署几个小时后mapper编程了好几秒   

 

 还有查看jvm gc的情况

 

 网络是没问题的

初步判定是数据库连接池的问题      用的是德鲁伊     然后看了一下前同事写的定时任务  很多分钟级别的定时器采集阿里云数据    用了for循环一个设备一个设备的插入数据和更新数据

4、配置德鲁伊web监控页面

 

 5、综上初步判定是服务数据库连接池的问题。  

6、将定时任务中一个一个设备插入数据的方法该为in插入,批量插入,降低占用连接。  计划在公司以后的项目中,定时任务单独部署一个服务进行采集。

 

7、解决:将前同事的代码进行优化。在新服务器用docker重新部署一个mysql服务。接口变慢的问题就解决了,因为阿里云的数据库目前有好多个项目在使用,可能达到瓶颈。后面会更新mysql配置的博客。

 

posted @ 2022-08-18 14:21  古家杰  阅读(499)  评论(0编辑  收藏  举报