前言
小记一下前两周的事情,本来那周没啥事干,正在开心摸鱼,学习学习。彼时因为"金三银四",离职的离职,请假的请假,公司有个项目组的那周后端竟然没有人了,然后一脸懵逼的我被领导拉到这个项目组当临时工解决生产问题。
内心ost: danm!这个项目都没参与过我能解决个啥。
具体问题是什么呢? 存在生产的bug,如:数据显示问题,某部分功能没数据的问题,还有就是解决页面响应太慢的问题,因为太慢被客户反馈了,在催没办法。
看到这个图,各位小伙伴和我想法是不是一样,20s的响应速度,这他喵的竟然能过了测试上到生产,真棒!要我是客户绝对投诉。
由于是生产问题,我没法直接操作,只能通过生产日志来看,但是生产日志运维要拿日志还得走流程申请。
趁这个时间,拿到相关项目信息,拉了代码,找了对应的接口,看了代码,很好,注释,log日志少得可怜,真棒!
启动项目,把本地服务切到测试环境,用postman测了测接口,很好,50ms!
再用公司测试环境,页面看看,嗯~~,资源加载有点慢,2s左右,再看了数据库的数据才200条,而生产数据都是几十万以上的,那说明参考公司测试环境意义就不是很大了。
原因分析
影响页面响应速度原因大概有下面这几方法。
-
数据库性能问题
数据库查询效率低下是导致页面响应慢的常见原因。这可能是因为查询没有正确地使用索引,或者数据库设计不合理。 -
服务器性能不足
服务器的硬件配置或软件配置可能不足以处理高负载。例如,服务器内存不足可能导致频繁的页面缓存失效。 -
资源加载缓慢
页面中的资源(如图片、CSS、JavaScript文件)如果体积过大或未经过优化,会导致页面加载缓慢。 -
网络延迟
用户与服务器的网络连接速度也会影响页面的响应速度。 -
代码效率问题
前端或后端的代码可能存在性能瓶颈,如循环处理大量数据、使用了低效的算法等。
问题解决
那么第一优先肯定去排查数据库相关的啦
是否加索引
答案:所有业务表都没加
ok,在代码查找需要加索引字段,果然生产的查询速度有所提升,15s,还是有问题呀。
翻看自己的学习笔记,难到是索引失效?
看了一下接口的sql,没有发现有sql问题。
然后让运维帮在生产查一下sql
好家伙为了主键不重复,结果表里的tbid就是拼接所有字段的数据形成的一个主键,而且为了“更好的存数据”用CLOB类型,所以索引添加无效了
最后,从源头解决,让推数人员重新建结果表,重新推数。