30个Linux性能问题诊断思路

news/2024/5/30 17:06:25/文章来源:https://blog.csdn.net/qqrrjj2011/article/details/136669735

文章目录


在Linux系统性能问题诊断过程中,有许多关键的检查点和技术可以用来识别潜在的问题源头。以下是30个Linux性能问题诊断思路的概览,包括但不限于:

  1. 系统负载监控:
    • 使用uptime查看当前系统运行时间、在线用户数以及1/5/15分钟内的系统负载平均值。
  • 使用tophtop实时查看系统整体资源使用情况,包括CPU、内存和各个进程占用状况。
  1. CPU分析:

    • 使用vmstat检查CPU使用率、上下文切换和进程状态变化。
    • 使用mpstat按CPU核分别查看CPU利用率。
    • 运行pidstat追踪个别进程的CPU消耗。
  2. 内存检测:

    • 使用free -mfree -h查看内存使用情况,包括总内存、已用内存、空闲内存和缓存。
    • 使用vmstat查看内存交换活动(如sswpd列)。
  3. I/O性能分析:

    • 使用iostat监视磁盘I/O统计数据。
    • 运行iotop查看实时磁盘I/O操作。
    • 使用pidstat -d查看进程级别的磁盘I/O活动。
  4. 网络流量监测:

    • 使用netstatss查看网络连接状态和带宽使用情况。
    • 使用iftopnethogs实时监控网络流量。
  5. 进程分析:

    • 使用pspgrep查找特定进程及其资源消耗。
    • 使用strace跟踪进程的系统调用,定位可能的阻塞操作。
    • 通过lsof查看进程打开的文件描述符和占用的资源。
  6. 日志分析:

    • 查阅系统日志/var/log/messagesjournalctl,寻找异常记录。
    • 分析特定服务的日志文件,如Apache、MySQL等。
  7. 文件系统与inode使用:

    • 使用df -h查看磁盘空间使用情况。
    • 使用du -sh *检查目录大小。
    • 使用inodes工具查看inode使用情况。
  8. 系统限制检查:

    • 检查/etc/security/limits.conf配置文件,查看是否有资源限制导致问题。
    • 查看系统最大打开文件数限制(ulimit -n)。
  9. 内核调优:

    • 调整内核参数,比如sysctl命令调整系统参数。
  10. 查看系统瓶颈:

    • 使用perf工具进行性能剖析。
    • 使用dmesg查看内核警告和错误信息。
  11. 进程调度策略:

    • 使用chrtnicerenice改变进程优先级和调度策略。
  12. 内存泄漏检查:

    • 使用valgrindmassif等工具检测内存泄漏。
  13. 系统吞吐量与延迟测量:

    • 使用pingtraceroute测试网络延迟。
    • 使用ab(Apache Benchmark)或其他基准测试工具衡量系统吞吐量。
  14. 虚拟内存及SWAP分区检查:

    • 当内存紧张时,检查SWAP分区使用情况,并考虑增大SWAP或优化内存使用。
  15. 定时任务检查:

    • 检查crontab列表中是否存在高负载的定时任务。
  16. 服务配置审计:

    • 审查服务配置文件,如数据库配置、Web服务器配置等,确保配置合理。
  17. 内核抢占与并发问题:

    • 使用irqbalance平衡中断请求,避免单一CPU过载。
    • 检查锁争用,如通过perf locklockstat工具。
  18. TCP/IP栈检查:

    • 使用tcpdumpWireshark抓包分析网络层问题。
  19. 系统调用跟踪:

    • 使用systemtapbcc/eBPF工具进行深入的内核和用户态函数调用跟踪。
  20. 容器与虚拟机性能分析:

    • 在容器或虚拟机环境中,使用相应的性能分析工具,如kubectl topvirt-top
  21. 系统安全审计:

    • 使用auditd等工具检查是否存在恶意或意外的安全事件影响系统性能。
  22. 磁盘I/O排队深度检查:

    • 使用iostat -xdblktrace分析磁盘I/O操作队列深度。
  23. 分布式系统中的性能同步问题:

    • 对于分布式系统,检查Zookeeper、etcd等协调服务性能和一致性问题。
  24. 数据库性能优化:

    • 对于SQL数据库,执行EXPLAIN分析SQL查询性能,查看缓存命中率、索引使用等。
  25. 缓存系统分析:

    • 如果使用Redis、Memcached等缓存系统,检查缓存命中率和容量瓶颈。
  26. 服务端口监听与连接数:

    • 使用netstat -ntpl查看服务端口的监听状态和已建立的连接数量。
  27. 异步I/O和事件驱动编程框架分析:

    • 对于Node.js等异步应用,使用相应的调试工具分析事件循环和回调函数性能。
  28. 资源竞争与锁分析:

    • 对多线程或多进程应用,分析是否存在资源竞争问题,例如通过pthread_mutex_lock等API调用分析。
  29. 长期性能趋势分析:

    • 使用系统监控工具(如Prometheus、Grafana)收集并分析长期性能指标趋势,发现周期性或渐进式性能下降问题。

以上列举的诊断思路并不是一次性全部执行,而是根据实际遇到的问题有针对性地选择合适的工具和方法。通过综合分析,才能找到造成性能问题的根本原因,并针对性地提出解决方案。

这里提供几个具体的Linux性能诊断示例:

1. CPU使用率过高问题诊断:

# 实时查看所有CPU的使用情况
mpstat# 查找CPU使用率最高的前N个进程
top -o %CPU# 或者使用htop进行图形化展示
htop# 使用pidstat追踪某个PID的CPU使用情况
pidstat -p <PID># 使用 perf 工具对进程进行采样分析
perf record -p <PID>
perf report

2. 内存泄露检查:

# 使用 atop 工具持续监控内存使用情况
atop# 使用 pmap 查看指定进程占用的内存详情
pmap <PID># 使用 Valgrind 工具检测内存泄露
valgrind --leak-check=full --show-leak-kinds=all ./your_program

3. I/O性能问题诊断:

# 显示磁盘统计信息,包括每秒的读写次数、读写速度等
iostat -dxk 5 # 每5秒输出一次# 查看哪个进程正在大量读写磁盘
iotop# 使用 strace 跟踪特定进程的文件系统调用
strace -p <PID> -e trace=file

4. 网络性能问题诊断:

# 查看网络连接状态
netstat -tupan# 实时监控网络流量
iftop# 抓取网络包分析网络通信细节
tcpdump -i any -n port 80 # 捕获所有经过端口80的数据包

5. 系统性能长期监控与分析:

# 安装并配置 sysstat 包以定期记录系统性能数据
sudo apt-get install sysstat
vi /etc/default/sysstat # 修改SA1和SA2参数以设定数据收集频率# 查看收集的历史性能数据
sar -u # 查看CPU使用率
sar -b # 查看块设备(磁盘)IO统计
sar -n DEV # 查看网络设备活动统计

以上只是简单示例,实际性能问题诊断过程中可能需要结合多种工具和命令,深入了解问题所在并进行相应优化。
6. 文件系统性能问题诊断:

# 检查磁盘I/O统计,包括读写操作的总量、时间等
iostat -dx 5# 检查特定目录或文件的磁盘空间使用情况
du -sh /path/to/directory# 检查文件系统挂载选项,如是否开启了noatime或nodiratime等提高性能的选项
mount | grep /mount/point# 使用 fio 工具进行文件系统性能测试
fio --name=test --rw=randread --bs=4k --iodepth=64 --size=1G --directory=/mnt/test# 检查文件系统inode使用情况
df -i
find . -xdev -type f | wc -l # 计算当前目录及其子目录下的文件总数

7. 系统瓶颈检查:

# 使用 perf 工具进行性能剖析
perf top # 查看实时性能热点
perf record -g -p <PID> sleep 60; perf report -g # 收集并分析指定进程的CPU调用栈# 使用 pidstat 查看上下文切换情况
pidstat -w # 查看系统上下文切换情况
pidstat -w -p <PID> # 查看特定进程的上下文切换情况

8. MySQL数据库性能问题诊断:

# 查看MySQL服务器的整体性能
mysqladmin extended-status# 查看MySQL当前活跃的线程
SHOW FULL PROCESSLIST;# 分析慢查询日志
pt-query-digest slow_query.log# 检查索引使用情况和优化建议
EXPLAIN SELECT ... FROM ... WHERE ...;

9. 系统日志分析:

# 查看系统日志,找出可能导致性能问题的异常消息
less +F /var/log/messages
journalctl -f # 对于systemd系统# 对于应用程序日志,如Apache/Nginx/PHP等,根据具体配置路径查看其访问日志和错误日志
tail -f /var/log/apache2/access.log

10. 进程锁争用分析:

# 使用 perf 工具查看spinlocks统计
perf stat -e sched:sched_spin_unlock -a sleep 60# 对于内核锁,可以尝试使用lockdep工具启用锁依赖检查(需要在编译内核时开启)
echo 1 >/proc/sys/kernel/debug/lockdep# 或者在运行时动态检查特定锁的持有者
flock -w 0 /path/to/file.lock bash -c 'echo $$; ps'

请根据具体情况进行调整和选用合适的工具进行排查,解决性能问题通常需要结合多种手段和深入理解系统工作原理。
11. 虚拟内存及交换空间使用分析:

# 查看系统总的内存和交换空间使用情况
free -h# 查看哪些进程占用了大量的虚拟内存
sort -nk4 /proc/*/status | tail -n 10 | awk '/VmSize:/ {print $2, $NF}'# 检查交换空间使用情况
swapon -s# 如有必要,可以临时增加交换空间(假设创建一个名为'swapfile'的交换文件)
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile

12. 系统调用追踪与分析:

# 使用 strace 跟踪特定进程的所有系统调用
strace -p <PID># 或者只追踪某种类型的系统调用,如文件操作
strace -p <PID> -e trace=file# 使用 systemtap 进行更深入的内核级跟踪
stap -e 'probe begin { log("Start tracing...") } probe vfs.read { printf("Process %d is reading file: %s\n", pid(), name) }' -c

13. 进程调度与优先级调整:

# 查看当前进程的优先级
ps -eo pid,ni,comm# 调整进程优先级(nice值),值越小优先级越高
renice -n <priority> -p <PID># 设置进程为实时优先级(只有root权限可以)
chrt -r <priority> <PID>

14. 高并发场景下线程同步问题诊断:

# 使用 perf top 观察锁等待时间
perf top -e block:block_rq_insert# 对于Java应用,可以使用JDK自带的jstack工具查看线程堆栈,检查是否有死锁等问题
jstack <PID>

15. 针对Web服务器性能诊断:

# Apache HTTP Server性能分析
ab -n 1000 -c 100 http://localhost/# Nginx性能诊断,查看access_log和error_log,或启用ngx_http_stub_status_module模块获取状态信息
curl http://localhost/server_status

16. Docker容器环境下的性能诊断:

# 查看容器内部资源使用情况
docker stats <container_name># 进入容器内部执行常规的性能诊断命令
docker exec -it <container_name> bash

以上都是Linux性能问题诊断的一些常见步骤和工具,根据实际场景选择合适的方法进行分析和优化。

python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

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

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

相关文章

【人工智能】本地搭建AI模型Gemma

文章目录 前言一、安装条件二、安装ollama优化存储路径(不用优化也行)ollama命令详解&#xff1a;模型命令详解&#xff1a; 三、安装WebUiwindows安装不了docker解决测试 前言 最近看到google的gemma模型很火&#xff0c;因为模型较小对于但功能强大&#xff0c;大模型虽然很…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题&#xff1a;TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者&#xff1a;Yilong Ren&#xff08;任毅龙&#xff09;, Yue Chen, Shuai Liu, Boyue Wang&#xff08;王博岳&#xff09;,Haiyang Yu&#xff08;于海洋&#x…

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…

鹰眼实时建模一体化设备在与大疆无人机适配、进行实时建模时,需要购买特定的实时建模移动工作站,还是只需任意配置足够的笔记本电脑就行?

只需配置高性能计算移动工作站&#xff0c;性能好即可。 鹰眼实时建模终端与DJI Mavic3E组合&#xff0c;通过边飞边建&#xff0c;整体解决方案可以实现灾害现场三维实景快速建模&#xff0c;满足应急管理部所要求的每平方公里的三维实景建模时间≤5分钟、空间分辨率≤10cm”的…

解决JVM进程被系统杀掉问题

背景 服务A在测试环境&#xff0c;隔几个小时接口就无法访问。登录机器查看&#xff0c;发现进程已经没了。大致猜想是进程使用的内存或CPU资源使用太多&#xff0c;导致被系统kill。 问题定位 使用dmesg命令查看进程被kill的详情。 > dmesg --time-format iso2024-03-0…

23 经典卷积神经网络 LeNet【李沐动手学深度学习v2课程笔记】 (备注:提到如何把代码从CPU改到在GPU上使用)

目录 1. LeNet 2. 实现代码 3. 模型训练 4. 小结 本节将介绍LeNet&#xff0c;它是最早发布的卷积神经网络之一&#xff0c;因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的&#xff08;并以其命名&…

如何使用US Domain Center和WordPress搭建非营利组织网站的详细指南

在今天的数字化时代&#xff0c;拥有一个专业、易于管理和更新的网站对于非营利组织&#xff08;例如慈善机构、NGO等&#xff09;至关重要。WordPress是一个功能强大且易于使用的网站构建平台&#xff0c;而美国域名中心 US Domain Center&#xff1a;US Domain Center 则是一…

C语言---单身狗问题

1.单身狗初阶 这个题目就是数组里面有一串数字&#xff0c;都是成对存在的&#xff0c;只有一个数字只出现了一次&#xff0c;请你找出来 &#xff08;1&#xff09;异或是满足交换律的&#xff0c;两个相同的数字异或之后是0&#xff1b; &#xff08;2&#xff09;让0和每个…

jupyter notebook 突然莫名奇妙的白屏

jupyter notebook 突然莫名奇妙的白屏 事件背景&#xff1a; 最近在折腾openai&#xff0c;哎&#xff0c;一言难尽&#xff0c;使用的是conda管理python版本的切换&#xff0c;使用jupyter notebook来运行python程序&#xff0c;其实PyCharm也行&#xff0c;但是&#xff0c;…

Electron程序如何在MacOS下获取相册访问权限

1.通过entitiment.plist&#xff0c;在electron-builder签名打包时&#xff0c;给app包打上签名。最后可以通过codesign命令进行验证。 TestPhotos.plist electron-builder配置文件中加上刚刚的plist文件。 通过codesign命令验证&#xff0c;若出现这个&#xff0c;则说明成…

疯狂数钞票H5游戏

移动端微信h5 <template><div class"container" id"container"><div class"regBag"></div><div class"moneyBox"><transitionv-for"(item,index) in showImgList":key"index"…

一张照片即可生成逼真虚拟主播技术原理

虚拟形象技术正逐渐成为企业展示品牌形象、提升用户体验的重要工具&#xff0c;美摄科技凭借其卓越的技术实力&#xff0c;推出了一款基于照片生成数字人的解决方案&#xff0c;通过AI技术的综合运用&#xff0c;将一张普通的照片转化为逼真的虚拟主播。接下来&#xff0c;我们…

Ps:画笔工具

画笔工具 Brush Tool是 Photoshop 中最常用的工具&#xff0c;可广泛地用于绘画与修饰工作之中。 快捷键&#xff1a;B ◆ ◆ ◆ 常用操作方法与技巧 1、熟练掌握画笔工具的操作对于使用其他工具也非常有益&#xff0c;因为 Photoshop 中许多与笔刷相关的工具有类似的选项和操…

边缘计算全面概述

什么是边缘计算&#xff1f; 边缘计算是一种分布式计算概念&#xff0c;将智能集成到边缘设备&#xff08;边缘节点&#xff09;中&#xff0c;使数据能够在数据采集源附近实时处理和分析。由于边缘计算在网络边缘本地处理数据&#xff0c;而不是在云端或集中式数据中心&#…

MBT-Net

feature F&#xff0c;edge feature E-F where r related to the relative position 辅助信息 作者未提供代码

创建SpringCloudGateWay

创建SpringCloudGateWay 本案例基于尚硅谷《谷粒商城》项目&#xff0c;视频27 创建测试API网关 1、创建module 2、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:x…

苹果电脑下载crossover对电脑有影响吗 crossover mac 好用吗CrossOver虚拟机 CrossOver打游戏

苹果电脑下载crossover对电脑有影响吗&#xff1f; 在苹果电脑下载安装crossover对电脑没有什么影响&#xff0c;并且可以解决macOS系统不能安装Windows应用程序的问题。相较于虚拟机和双系统而言&#xff0c;crossover安装软件更简单&#xff0c;占用内存也更小。下面我们来看…

网际报文协议ICMP及ICMP重定向实例详解

之前在一个项目中遇到了与ICMP重定向相关的问题&#xff0c;因为缺乏对ICMP相关内容的了解&#xff0c;排查了很长一段时间才查出来。本文给大家简要地介绍一下ICMP及ICMP重定向相关的内容。 1、ICMP的概念 ICMP&#xff08;Internet Control Message Protocol&#xff09;网际…

狂揽Github—start19.7k☆开源OCR—Umi-OCR

文章目录 背景Umi-OCR—源码下载Umi-OCR—可执行程序下载页面介绍截图OCR识别批量OCR识别批量文档二维码全局设置 总结&#xff1a; 背景 大家都知道我是一个Python办公自动化的小小程序员&#xff0c;经常收集一些免费开源的OCR供大家使用&#xff0c;目前我已经写出来多家OCR…

已解决:android SDK安装时点击SDK Manager出现闪退

1、首先确保电脑里边安装了JDK&#xff0c;并且要把安装路径配置在环境变量里边&#xff0c;避免使用绝对路径 推荐%JAVA_HOME%\bin 2、在C:\Users\huanhuan\Desktop\android-sdk-windows\tools路径下找到android.bat文件打开&#xff0c;把set java_exe后改为jdk中java.exe的路…