问题
最近公司的某个业务系统在运行过程中,经常出现数据库锁表、应用服务器CPU使用率飙升,导致系统响应很慢,甚至系统崩溃,严重影响着用户体验和企业业务运作。
分析
通过跟用户沟通,以及从数据库锁表的信息来看,导致性能问题主要有以下原因:
1、大量数据导出操作
大量数据缓存到服务器,需要占用大量内存空间。内存紧张的时候,可能出现频繁GC甚至是FULL GC的情况,导致CPU资源长期被GC线程占用,无法处理其他请求。
2、慢查询
慢查询导致数据库连接长期占用CPU,使CPU资源不能及时释放。此时,CPU无法处理其他请求。
3、某些业务逻辑出现长期等待数据表资源释放
某些业务逻辑中,可能遇到慢查询或者第三方接口响应较慢,导致一些业务表长期锁定,影响了相关模块的操作。
优化方案
应用服务器层面优化:
1、加大JVM内存。
2、有条件加大服务器内存。
数据库层面优化:
1、根据“数据库引擎优化顾问”提供的建议进行优化。
2、优化SQL,例如设置索引。
3、尽量减少数据表数据,例如,删除已经逻辑删除的数据;一些对当前业务影响不大的数据可以考虑做迁移;日志数据可以考虑清除。
代码层面优化:
1、考虑异步,例如异步导出、异步调用第三方接口等。
2、考虑利用定时任务。
3、尽量减少数据库连接,多考虑批量数据操作。
4、限制导出数量。
5、使用缓存。
标签:方案,异步,性能,业务,数据库,GC,优化,CPU 来源: https://www.cnblogs.com/ayic/p/16536268.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。