一、数据库连接池不释放

       压测进行一段时间后,响应报"XX time out"等连接超时的错误

       定位方法:

       (1)通过命令:SHOW VARIABLES LIKE '%max_connections%'; 查询设置的最大连接数

    (2)通过命令:show status like 'Threads%';查询当前的连接数是多少(show processlist/show full processlist等命令也是可以的 )

               

               如果当前连接数大于等于最大连接数,说明数据库连接池被占满,需要把最大连接数修改大一点(一般在/etc/my.cnf里面修改 max_connections = xxxx  或通过命令:set global max_connections=xxxx 进行设置)

    (3)再重新进行压测,如果还是出现数据库连接池被占满的情况,则可以定位到是数据库连接池没释放导致的性能问题

         解决方法:

         通过代码看一下是不是只有创建连接而没关闭连接,需要开发进行解决

 

二、数据库死锁

   压测一段时间后,报连接超时的错误,或在压测的过程中点击程序的某些按钮,程序无响应等

        定位方法:

       (1)通过查看数据库服务器的日志来定位是否有死锁的情况

 

三、TPS一直上不去(响应时间长)

       1. 网络带宽的问题(压测一般在内网进行,带宽的问题暂时先忽略)

       2. 压测机的问题

       3. 硬件资源的问题(应用服务器,数据库服务器)

       4. 线程池或数据库连接池的问题

       5. 垃圾回收机制的问题

       6. 业务逻辑的问题

       7. 系统架构的问题

 

       欢迎各位大佬指导

posted on 2020-04-11 13:44  wfw001  阅读(403)  评论(0编辑  收藏  举报