性能调优经历二
背景
这是一个智慧停车平台的服务器,接口访问比较慢,经常宕机。
分析步骤:
1.先问问老员工,他说先找托管服务商重启,再登录上删点东西。
2.查看服务器运行状态,发现磁盘快满了,cpu占用70~80%,IO也是很紧张。(好家伙,全活儿)
3.由于刚入职,对程序不熟悉,只能一个个文件夹看大小,一层层定位,发现磁盘占用主要分三块:MQ消息固化、停车场进出照片、第三方对接xml
4.cpu占用,可以通过资源管理器找到问题,主要是sqlserver占用
解决步骤:
1.对方平台对接的服务程序,xml上传成功后删除本地文件
2.通过sql server profiler分析出频繁执行的sql,不常变动的内容使用内存缓存,对于循环单条的查询改成批量查询
3.MQ服务优化:
1>由无脑的topic路由模式改成direct优先,不满足需要时再考虑topic,尽量不用广播
2>将无脑的消息固化改掉,对于持续变化的状态消息不固化,对于记录型消息超时固化
3>客户端避免频繁的创建连接,用打开channel代替
4>消费者处理慢会导致服务器上消息不断积累,找另外一台电脑开个消费者程序搞定
4.平台接口服务,过期的图片定期删除,通过细分文件夹来避免一个文件夹中出现成千上万的子文件夹或文件
5.展示平台,对于统计类sql不实时执行,而是启动时执行,收到进出事件在变量上进行计算,每小时执行进行更正
优化结果:
cpu占用降到10%左右,硬盘和IO不再紧张,稳定运行到我离职(几个月吧)。