大连模板建站平台,国家企业信用信息网,东莞市卫生健康局,宁波seo公司推荐概述以下分享的都跳过了很多坑#xff0c;包括redis、tomcat环境配置、机器硬件配置等等问题#xff08;与线上保持一致#xff0c;或者硬件性能减配系数#xff0c;例如线上#xff1a;8C16G#xff0c;压测#xff1a;4C8G#xff0c;系数简单相差2倍#xff09;包括redis、tomcat环境配置、机器硬件配置等等问题与线上保持一致或者硬件性能减配系数例如线上8C16G压测4C8G系数简单相差2倍直接把挖掘瓶颈的主要思路搬出台面。压测数据分析全局图预览 通过对某直播观看页面进行高并发压测在APMPinpoint监控中发现一个有趣的地方 上图中两个红框中的数据接近10s相隔大概30分钟就发生16:20左右系统撑不住服务出现异常不可用怀着好奇的心态追查方法调用的栈如下图所示 该方法耗时多久呢首先搞清楚Call Tree里面的一些概念 可见这个sql查询方法耗时14秒多为什么呢APM里面已经显示了sql语句在mysql中执行查询发现执行时间很快那么问题出在哪里呢只能继续深挖通过对比同样的url请求响应毫秒级的情况下发现数据如下图所示 从redis获取到数据后并没有再执行sql查询了通过这个分析我们决定追踪代码还原真相不懂代码的测试不是好开发 可以看到缓存失效之后直接查询数据库了解决方案SQL优化优先级低从数据分析来看sql优化的用处不大并不是返回了大量数据缺少索引此次可以跳过。缓存并发优先级高 出现场景当网站并发访问高一个缓存如果失效可能出现多个进程同时查询DB同时设置缓存的情况如果并发确实很大这也可能造成DB压力过大还有缓存频繁更新的问题。 处理方法对缓存查询加锁如果KEY不存在就加锁然后查DB入缓存然后解锁其他进程如果发现有锁就等待然后等解锁后返回数据或者进入DB查询。经验总结1、善用监控工具例如APM进行链路监控、服务器性能、方法调用顺序观察2、追踪方法栈和相关日志3、深入排查代码挖本质微信公众号乐少黑板报 转载于:https://blog.51cto.com/jooben/2324649