接口响应时长几十秒问题排查以及解决

目录

背景

解决方案

总结


背景

     线上系统运行几年后,被项目上提bug,有些接口响应很慢,加载页面要几十秒

解决方案

1、步骤一,加索引

性能优化成本高,需要开发周期,临时方案先分析慢sql,通过增加索引临时解决

效果: 增加索引之后,见效甚微。问题未解决

2、步骤二,分析查询性能

排查sql执行时间,定位是不是mysql服务器问题

mysql查询数据表,总数50w,单sql查询2秒。 mysql没有问题。问题未解决

3、步骤三,导出线上库重现问题

在本地开发库,接口都很快,1秒以内。所以为了重现问题,导出线上数据库表,本地重现以及分析代码。把线上库导入到本地库,执行之后,模拟用户参数,发现接口确实很慢,要几十秒。

找到接口代码,进行分析。发现存在循环,按每查询一次2秒,循环几十次,时间确实吓人

4、步骤四,修改问题

把单个循环查询,改成批量查询。接口就只用查2次数据库,时间控制在5秒

5、步骤五,加缓存(可不做)

如果5秒,还不能满足。可以考虑加缓存,数据查询之后,把数据放入redis缓存,设置缓存过期策略。

总结

接口性能差,可以通过下面几个方面进行优化:

1、分析mysql,加索引

2、清理数据表垃圾数据,减少数据量

3、分析代码,循环多次查数据表,优化成批量查数据表

4、循环多次写数据,改成批量写数据

5、以上都不能满足,考虑加缓存

6、如果数据表数据量达到千万,考虑历史数据保存到es,非历史数据存mysql的方案。进行分库分表等处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/199600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive数据库与表操作

文章目录 一、准备工作二、Hive数据库操作(一)Hive数据存储(二)创建数据库(三)查看数据库(四)修改数据库信息 一、准备工作 二、Hive数据库操作 (一)Hive数据…

根据端口查找进程

关闭kibana kibana自带命令 kibana没有提供关闭命令,通过命令 ps -ef|grep kibana查找不到kibana相关的信息。 可以通过进程暴露的端口来查找 netstat -anltp|grep 5601获取到进程号,然后kill掉进程 kill -9 进程号Docker管理Kibana 但是如果使用D…

数据库实验7

实验报告(七)数据更新 1、实验目的 (1) 掌握插入、更新和删除表数据的方法 (2) 掌握更新操作与子查询结合的用法 2、实验预习与准备 (1) Update,Delete&am…

随笔(持续更新)

随笔(持续更新) 1、某个网络有没有连通 要获取某个网站的ip地址,可以通过ping它的域名就可以得到IP地址 例如:我想获取百度的ip地址(Windows环境) C:\Users\tq>ping www.baidu.com正在 Ping www.a.s…

04、基于高斯分布的异常检测算法

04、基于高斯分布的异常检测算法原理与实践 开始学习机器学习啦,已经把吴恩达的课全部刷完了,现在开始熟悉一下复现代码。对这个手写数字实部比较感兴趣,作为入门的素材非常合适。 数据的严重偏斜往往会导致监督学习算法面临巨大的挑战——…

西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告

目录 一、计算/设计过程 二、画出并填写实验指导书上的预表 三、画出并填写实验指导书上的虚表 四、粘贴原理仿真、工程仿真截图 一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入…

法线制作神器crazybump 和 Normal Map Generator

UE4系列文章目录 文章目录 UE4系列文章目录前言一、crazybump是什么?二、Normal Map Generator是什么? 前言 我们在使用UE4、UE5制作材质时,经常会遇到使用法线图。使用深度图生成法线图,一般会使用photoShop等软件,对…

运算符重载

运算符重载 类对象不能直接参与运算,需要对运算符进行重载。 运算符预定义的操作只能针对基本数据类型,但是对于自定义类型,若需要类似的运算符操作,此时也可以重新定义这些运算符的功能,使其支持特定类型&#xff0c…

基于QT的俄罗斯方块游戏设计与实现

基于QT的俄罗斯方块游戏设计与实现 摘要:信息时代正处于高速发展中,而电子游戏已经成为人生活中或不可少的消磨工具之一。科技时代在不断地高速发展中,游戏相关编程设计也随着发展变得越来越重要, 俄罗斯方块游戏是一款古老传遍世…

申请免费的ssl证书

申请网站: https://freessl.cn/ 解密域名,添加cname跳转 下载acme.sh 工具脚本,地址:https://github.com/acmesh-official/acme.sh/wiki/Install-in-China 下载成功之后的acme.sh是一个目录,进去之后才是脚本 执行…

【vue脚手架配置代理+github用户搜索案例+vue项目中常用的发送Ajax请求的库+slot插槽】

vue脚手架配置代理github用户搜索案例vue项目中常用的发送Ajax请求的库slot插槽 1 vue脚手架配置代理2 github用户搜索案例2.1 静态列表2.2 列表展示2.3 完善案例 3 vue项目中常用的发送Ajax请求的库3.1 xhr3.2 jQuery3.3 axios3.4 fetch3.5 vue-resource 4 slot 插槽4.1 效果4…

windows11 phpstudy_pro php8.2 安装redis扩展

环境:windows11 phpstudy_pro php8.2.9 一、命令查看是否安装redis扩展 在对应网站中通过打开,,选择对应的PHP版本,用命令 php -m 查看自己的php 有没有redis扩展 上面如果有,说明已经安装了,如果没有安装&#xff1…

Python加百度语音API实现文字转语音功能

目录 一、引言 二、百度语音API介绍 三、Python实现文字转语音功能 1、安装相关库和工具 2、准备待合成的文字信息 3、调用百度语音API进行合成 四、实验结果与讨论 五、优化与改进 六、结论 一、引言 随着人工智能技术的不断发展,语音合成技术也越来越成…

VT-MSPA1-12-1X/V0直动式比例压力阀放大器

适用于控制不带电位移反馈的比例压力阀、比例流量阀、比例方向阀的控制;差动输入;1个脉冲输出端口;函数发生器;带斜坡时间可调的斜坡生器(可上升和下降斜坡); 可调电流调节器;电源带错极保护;LED 电磁铁动作显示;(LED 的亮度与流过电磁铁的电…

Python 分解IP段获取所有IP(子网掩码)

需求 192.168.1.0/24,192.168.2.1-192.168.2.254,192.168.3.3 IP段格式已 "," 分割,获取所有IP 注意 1. 判断 IP 是否合规 2. 去除多余的字符,例如空格、换行符 3. 去重 代码 import re import ipaddressdef isIP(ip):p re.compile(^((…

网络运维与网络安全 学习笔记2023.11.28

网络运维与网络安全 学习笔记 第二十九天 今日目标 OSPF汇总之域间路由、OSPF汇总之外部路由、OSPF链路认证 OSPF安全认证之区域认证、OSPF虚链路 OSPF汇总指域间路由 项目背景 企业内网运行多区域的OSPF网络,在R1 上存在多个不稳定的链路 R1上的不稳定链路&a…

4.Spring源码解析-loadBeanDefinitions(XmlBeanDefinitionReader)

第一个点进去 发现是空 肯定走的第二个逻辑了 这里在这里已经给属性设置了值,所以肯定不是空能拿到。 1.ClassPathXmlApplicationContext 总结:该loadBeanDefinitions是XmlBeanDefinitionReader设置xml文件在哪。

Linux 磁盘挂载

一、查看挂载点 df -h 二、查看磁盘信息 fdisk -l 下面红色的这一块就是未分区的磁盘 三、 进行磁盘分区 fdisk /dev/sdb /dev/sdb :是上面fdisk -l查询出来未分区的磁盘地址 根据提示输入m获取命令 四、执行命令,创建一个分区 1、新建分区&#…

代码随想录算法训练营 ---第四十九天

前言: 今天是买卖股票的最佳时机系列,本系列之前在学习贪心思想时做过一些。 第一题: 简介: 本题在读题时我们要注意到几个细节 1.本题股票买卖只有一次。2.我们要在最低点买股票,在最高点卖股票。 我的思路&#…

不小心删除了短信,如何在 Android 上恢复已删除的短信

不小心删除了文字消息在 Android 手机上使用可能会是一种令人痛苦的体验。这些消息可能包含有价值的信息、珍贵的回忆或重要的细节。幸运的是,您可以探索多种方法来恢复这些丢失的消息。在本文中,我们将深入研究可用于检索已删除短信的选项,并…