线上问题排查总结

目录

线上问题排查总结

(1)排查服务器

 (2)排查数据库

(3)排查慢sql

  (4)排查网速

(5)增加日志打印

(6)如果现场数据库很慢,排查问题可以把数据库导出一份到本地,在本地排查

(7)排查端口占用

注意事项:


一、线上问题排查总结

系统资源异常

● CPU占用过高

● 物理内存富余量极少

● 磁盘I/O占用过高

● 发生换入换出过多

● 网络链接数过多

● 可以通过top、iostat、vmstat、netstat工具获取到相应情况。

内部服务异常

● Java堆满 - 使用jstat工具查看Java堆的占用率

○ Java堆是“Java虚拟机”从操作系统申请到的一大块内存,用于存放Java程序运行中创建的对象。

○ 当Java堆满或者较满的情况下,会触发“Java虚拟机”的“垃圾收集”操作,将所有“不可达对象”(即程序逻辑不能引用到的对象)清理掉。

○ 有时,由于程序逻辑或者Java堆参数设置的问题,会导致“可达对象”(即程序逻辑可以引用到的对象)占满了Java堆。

○ 这时,Java虚拟机就会无休止地做“垃圾回收”操作,使得整个Java程序会进入卡死状态。

● 日志出现异常信息

○ 日志中会记录一些异常信息,例如超时、操作失败等信息,其中可能含有系统故障的关键信息。

● 死锁、死循环、数据结构异常(过大或者被破坏)、集中等待外部服务回应等现象

○ 可采用jstack工具可以获取可能有用的线索

方法总结如下:

(1)排查服务器

系统空间

df -h

free -h

如果是buff/cache占用了大量内存,需要手动释放下:

echo 3 > /proc/sys/vm/drop_caches

free -g

检查剩余物理内存

iostat -d 1

检查磁盘I/O情况

netstat -aonp | grep tcp| wc -l

查看各种状态的TCP连接数量和。如果总数较小(例如小于500),则排除连接数占用过多问题

netstat -natp|awk '{print $7}' |sort|uniq -c|sort -rn

按照PID统计TCP连接的数量,然后对连接数较多的进程逐一排查

(2)排查数据库

排查数据库服务器,内存占用,磁盘占用

(3)排查慢sql

   explain  sql

   尝试加索引

  1. 索引优化
  2. 通过执行计划,查看是否走到索引

(1)索引是否有区分度, 前提是有索引 (单字段索引、联合索引)

(2)是否忽略左匹配原则

(3)采用前缀模糊查询等坏语句

(4)没有做类型转换,导致未走到索引,比如使用$

(5)使用了不等号

(6)大量子查询(多用join,避免临时表)

(7)在where子句中使用表达式操作、函数操作等

1.针对查询条件,尽量在明细表中冗余部分查询条件字段,尽量避免明细表与其他表做关联

2.数据库设计上不允许出现NULL值,使用空字符串替代

3.页面上涉及的查询条件必须设计索引

4.历史有效数据(已删除的数据),定期做数据归档,避免因为无效历史数据占用大量查询

5.连接的时候以小表驱动大表

6.查询出现类型转换,索引失效

7.排序字段需要增加索引

8.SQL语句不要使用<> 会丢失索引

9.统计类数据,不要拿明细数据汇总,应该按照周期(天、周)汇总一些数据,供统计页面使用

10.统计查询类页面,尽量保证接口调用次数少

(4)排查网速

看网络是否畅通,服务器之间是否可以互相访问

(5)增加日志打印

   有些问题不好排查,可以增加日志打印信息

(6)如果现场数据库很慢,排查问题可以把数据库导出一份到本地,在本地排查

(7)排查端口占用

netstat -ntlp |grep 9023

lsof -i:9023

kill -9 PID

二、注意事项:

(1)修改线上数据表,脚本修复数据,一定要先备份数据

(2)线上dump堆栈要小心,能不用就不用,免得卡死

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门

目录 1.初识MQ 1.1.同步和异步通讯 1.1.1.同步通讯 1.1.2.异步通讯 1.2.技术对比&#xff1a; 2.快速入门 2.1.安装RabbitMQ 2.2.RabbitMQ消息模型 2.3.导入Demo工程 2.4.入门案例 2.4.1.publisher实现 2.4.2.consumer实现 2.5.总结 3.SpringAMQP 3.1.Basic Que…

2023.11.29 -hmzx电商平台建设项目 -核销主题阶段总结

目录 1.准备源数据 2.准备数仓工具进行源数据同步到ods层,本项目使用Datax 3.使用Datax完成数据同步前建表时的方案选择 3.1同步方式区别: 3.2存储格式和压缩区别: 4.在hive中创建表,共31个表 5.数仓概念 和 数仓建模方案 5.1数仓的基本概念 5.2 数仓建模方案 关系建模…

信贷销售经理简历模板

这份简历内容&#xff0c;以信贷销售经理招聘需求为背景&#xff0c;我们制作了1份全面、专业且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴。 信贷销售经理简历模板在线编辑下载&#xff1a;百度幻主简历 求职意向 求职类型&#xff1a;全职 意向岗位&#xff…

光伏设计软件:创新工具,提升设计效率与质量

随着可再生能源的全球关注度不断提高&#xff0c;光伏产业也迎来了前所未有的发展机遇。光伏设计软件作为支持光伏项目的重要工具&#xff0c;为设计师提供了强大的功能&#xff0c;以优化设计过程&#xff0c;提高设计效率&#xff0c;减少错误&#xff0c;降低成本。 首先&am…

保存规则、nat、自定义链

目录 一、保存防火墙的规则 1、保存规则 二、nat 一、SNAT和DNAT 1.SNAT 2 DNAT 三、自定义链 1.添加自定义链 2.设置自定义链并生效 3.删除自定义链 一、保存防火墙的规则 1、保存规则 [rootlocalhost ~]# iptables -A INPUT -s 172.16.114.30 -p tcp -m multiport…

科技与教育:未来教育的新趋势

在21世纪&#xff0c;科技的快速发展正在深刻地改变教育行业。从在线学习平台到虚拟现实教室&#xff0c;科技为教育带来了革命性的变化。本文将探讨科技如何影响现代教育&#xff0c;并预测未来教育的发展趋势。 一、科技在教育中的应用 在线学习平台&#xff1a;通过平台如C…

深入解析 Python 中 Parsel 的两种数据提取方式

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在网络爬虫的世界中&#xff0c;数据提取是至关重要的一环。Python 提供了许多强大的工具&#xff0c;其中之一就是 parsel 库&#xff0c;专门用于解析和提取 HTML 或 XML 数据。本篇博客将深入探讨 parsel 中两…

信贷专员简历模板

这份简历内容&#xff0c;以信贷专员招聘需求为背景&#xff0c;我们制作了1份全面、专业且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴。 信贷专员简历在线编辑下载&#xff1a;百度幻主简历 求职意向 求职类型&#xff1a;全职 意向岗位&#xff1a;信贷专员 …

LRU缓存淘汰策略的实现——LinkedHashMap哈希链表

LRU&#xff08;最近最少使用&#xff09;缓存淘汰策略可以通过使用哈希链表实现。LinkedHashMap 是 Java 中提供的一种数据结构&#xff0c;它综合了哈希表和双向链表的特点&#xff0c;非常适合用来实现 LRU 缓存。 LinkedHashMap 内部维护了一个哈希表和一个双向链表。哈希…

使用Jetty编写RESTful接口

一、依赖 <!--Jetty服务器的核心依赖项&#xff0c;用于创建和管理服务器。--><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>9.4.43.v20210629</version></dependency…

spring框架的事务传播级别经典篇

一 spring事务传播级别 1.1 总结概述 方法A:外围方法&#xff0c;方法B&#xff1a;内部方法&#xff0c;在A中调用B 1.事务级别PROPAGATION_REQUIRED&#xff1a; 如果A为PROPAGATION_REQUIRED&#xff1a;B 不管有没有设置事务级别&#xff0c;都会加入到A的事务级别中。如…

使用Docker一键安装MySQL与Nginx脚本

在项目开发和部署过程中&#xff0c;使用Docker可以方便地快速搭建和管理数据库&#xff08;MySQL&#xff09;以及Web服务器&#xff08;Nginx&#xff09;。本教程将为你提供一份一键安装脚本。 安装Docker 首先&#xff0c;确保你的系统已经安装了Docker。如果没有安装&am…

【驱动】串口驱动分析(四)-串口编程和调试方法

串口调试 串口调试主要有 根据/proc系统信息确认串口状态&#xff0c;stty命令&#xff0c;编程调试 三种调试方法&#xff0c;下面我们分别具体介绍下。 根据设备节点确认串口是否正常 系统上电时&#xff0c;默认会使能串口&#xff0c;我们可以通过dmesg | grep ttyS 查看…

基于C++11实现将IP地址、端口号和连接状态写入文件

要基于C11实现将IP地址、端口号和连接状态写入文件&#xff0c;您可以使用std::ofstream类来打开文件并进行写入操作。以下是一个示例&#xff1a; #include <iostream> #include <fstream>void writeConnectionStatus(const std::string& ip, int port, bool…

SSM6 11-27 SpringMvc过滤器和异常处理

try catch:处理异常 throw/throws:不处理 抛出 jvm中断程序运行 打印错误信息 web:经典三层模型&#xff1a; dao(mapper) service web层 异常抛给web层Controller类的方法&#xff0c;每个方法可能处理异常,可能处理异常代码相似,造成重复代码重复编写 web层再往上抛 …

【驱动】串口驱动分析(二)-tty core

前言 tty这个名称源于电传打字节的简称&#xff0c;在linux表示各种终端&#xff0c;终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标&#xff0c;输出设备显示器的控制终端和串口终端。也有对应于不存在设备的pty驱动。在如此众多的终端模型之中&#xff0c;linux是怎么…

Flutter使用flutter_gen管理资源文件

pub地址&#xff1a; https://pub.dev/packages/flutter_gen 1.添加依赖 在你的pubspec.yaml文件中添加flutter_gen作为开发依赖 dependencies:build_runner:flutter_gen_runner: 2.配置pubspec.yaml 在pubspec.yaml文件中&#xff0c;配置flutter_gen的参数。指定输出路…

《C++ Primer》第10章 算法(二)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 10.4 再探迭代器&#xff08;P357&#xff09; 除了为每个容器定义的迭代器外&#xff0c;头文件 iterator 中还定义了额外的几种迭代器&#xff1a; 插入迭代器&#xff08;insert iterator&#xff09;&…

Selenium 连接到现有的 Google Chrome 示例

python 3.7 selenium 3.14.1 urllib3 1.26.8 Google Chrome 119.0.6045.160 (64位) chromedriver.exe 119.0.6045.105(win32) 1 Google Chrome 添加参数 "--remote-debugging-port9222" 2 测试效果(chromedriver.exe 要和 Google Chrome 版本…

vue3 router-view 使用keep-alive报错parentcomponent.ctx.deactivate is not a function

问题 如下图&#xff0c;在component组件上添加v-if判断&#xff0c;会报错: parentcomponent.ctx.deactivate is not a function 解决方法 去除v-if&#xff0c;将key直接添加上。由于有的公用页面&#xff0c;需要刷新&#xff0c;不希望缓存&#xff0c;所以需要添加key…