Linux性能分析
gudong366 2025-07-04 20:25 6 浏览
性能分析
一、机器配置查看
# 总核数=物理CPU个数x每颗物理CPU的核数
# 总逻辑CPU数=物理CPU个数x每颗物理CPU的核数x超线程数
grep "physical id" /proc/cpuinfo |uniq |wc -l # 查看物理CPU个数
grep "processor" /proc/cpuinfo |wc -l # 查看逻辑CPU的个数
grep "cpu cores" /proc/cpuinfo |uniq # 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo |grep name |cut -d: -f2 |uniq -c # 查看CPU信息(型号)
cat /proc/cpuinfo |grep MHz |uniq # 查看CPU主频
cat /proc/cpuinfo |grep name |cut -d: -f2 |uniq -c
二、常用分析工具
- 主要分析工具
vmstat、sar、mpstat、pidstat # 检测是否存在 CPU 瓶颈(线程);
vmstat、free # 检测是否存在内存瓶颈(进程);
iostat # 检测是否存在磁盘 I/O 瓶颈;
netstat # 检测是否存在网络 I/O 瓶颈;
- 排查流程
CPU:top jstack vmstat
磁盘:df iostat iotop
内存:free OOM
网络:netstat
- tcpdump 的用法
- tcpdump 是一款网络抓包工具,用于捕捉网络上的数据包,并将其打印出来或保存到文件中供以后分析使用。
# 捕获源 IP 地址为 192.168.10.7 的 ICMP 数据包
tcpdump -vvv -nn -i eth0 icmp and src 192.168.10.7
# 捕获目标端口为 22 的 TCP 数据包。
tcpdump -vvv -nn -q -XX -i eth0 tcp dst port 22
# 捕获源 IP 地址为 192.168.9.73,目标端口为 10001 的数据包。
tcpdump -vvv -XX -nn -i eth0 src 192.168.9.73 and dst port 10001
# 捕获端口为 1814 的 UDP 数据包。
tcpdump -i eth0 upd port 1814 -w ./udp.cap
java 分析工具
- Linux top 命令详解:
- 持续监听进程运行状态 (biancheng.net) top(**1分钟、5分钟、15分钟的负载情况**) # 命令查看占用 CPU 高的进程 PID(如果 CPU 是单核的,则负载数值超过 1 就是高负载;如果 CPU 是四核的,则负载数值超过 4 就是高负载,一般认为不应该超过服务器 CPU 的核数)
- 运行(R)、空闲(I)、不可中断睡眠(D)、可中断睡眠(S)、僵尸(Z)、暂停(T)
- top -Hp 进程PID # 看占用 CPU 最高的线程 PID(Shift+p)
- printf "%x\n" 23891 =>5d53 # 将线程 ID 转为 16 进制线程 PID
- jstack 进程PID > thread_stack.log # 保存线程栈日志
- jstack 进程PID |grep -20 5d53 jstat -gcutil 4241 2000
- 几个例子
1. vmstat 5 5 # Virtual Memory Statistics
[xy@VM-16-11-centos ~]$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 75752 213904 1404116 0 0 0 9 1 0 0 0 99 0 0
0 0 0 74992 213904 1404152 0 0 0 0 614 1083 0 0 99 0 0
... ... ... ... ... ...
0 0 0 75300 213904 1404168 0 0 0 7 635 1178 0 0 100 0 0
2. sar -u 3 2 整体/ sar -d 3 5 磁盘/ sar -r 5 2 内存
3. mpstat -P ALL 5 # Multiprocessor Statistics
4. iostat -d -k -x 3 2
[xy@VM-16-11-centos ~]$ iostat -d -k -x 3 2
Linux 3.10.0-1160.45.1.el7.x86_64 (VM-16-11-centos) 10/18/2022 _x86_64_ (2 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 1.47 0.01 2.27 0.31 17.61 15.69 0.00 2.06 4.06 2.05 0.45 0.10
scd0 0.00 0.00 0.00 0.00 0.00 0.00 102.08 0.00 0.73 0.73 0.00 0.41 0.00
ps aux |grep mysqld |grep –v grep |awk '{print $2 }' |xargs kill -9 # 杀掉某一程序; |xargs -i kill -9 {} |xargs -I{} kill -9 {}
ps -elf |awk '{if ($2 == "Z"){print $4}}' |xargs kill -9 # 杀掉Zombie
pstree -a -u -p
# 抓取 UDP端口数据
tcpdump -c 5 -vvv -nn -i eth0 icmp and src 192.168.100.62
tcpdump -c 2 -vvv -nn -i eth0 -q -XX tcp dst port 22
nc -vuz x.x.x.x xxxx
nc -vu x.x.x.x xxxx
三、关于 iptables
3.1. 概览 流程图
raw 表 | mangle 表 | nat 表 | filter 表(默认) |
PREROUTING 链 | PREROUTING 链 | PREROUTING 链 | |
数据包刚到达防火墙改变目的地址 DNAT | INPUT 链 | ||
主要对外部包进入 linux 系统进行信息过滤 | |||
OUTPUT 链 | POSTROUTING 链 | POSTROUTING 链 | |
数据包离开防火墙改变源地址 SNAT | FORWARD 链 | ||
主要对内部 linux 系统索要发送的包进行信息过滤 | |||
/ | INPUT 链 | OUTPUT 链 | |
改变本地产生的包的目的地址 | OUTPUT 链 | ||
将外面过来的包传递到内部计算机中 | |||
/ | OUTPUT 链 | / | 链里是对应的规则 |
/ | FORWARD 链 | / | / |
在连接跟踪之前处理数据包 | 拆解报文,做出修改,重新封装功能 | 网络地址转换功能,内核模块 | 过滤功能,防火墙,内核模块 |
3.2. 语法规则
25个iptables常用示例 | 《Linux就该这么学》
25个iptables非常经典的用法 - 雨洛清城 - 博客园
四、RAID(独立磁盘冗余技术) & LVM(Logic Volume Managent)
4.1. RAID
- RAID0-Striping
- 组成:多块硬盘(至少 2 块)通过硬件或软件串联一起,组成大的卷组,提升了硬盘数据的吞吐量,但不具备数据备份和错误修复能力;
- 特点:读写性能提升;无冗余(容错)能力;空间利用率:ns(s–> 一块盘利用率);至少 2 块;
- RAID1-Mirror
- 数据写到多块硬盘设备上,当某一块硬盘发生故障后,一般会立即以热交换方式来恢复数据的正常使用,但硬盘的使用率却下降了,只有 33%左右;
- 性能提升:写下降,读提升;冗余能力:有;空间利用率:1/2;至少 2 块;
- RAID5
- 将硬盘设备的数据奇偶校验信息保存到除自身外每一块硬盘设备上,当硬盘出现问题,通过奇偶校验信息来尝试重建损坏的数据;
- 性能提升:读写提升;冗余能力:有;空间利用率:(n-1)s/n;至少 3 块;
4.2. LVM
- 物理卷(PV)真正的物理硬盘或者分区;
- **卷组(VG)**将多个物理卷合起来组成卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘的不同分区,抽象为一个逻辑硬盘;
- **逻辑卷(LV)**卷组是一个逻辑硬盘,硬盘分区后才可以使用,类似的,从卷组出来的分区为逻辑卷;
- 上一篇:如何对ESB平台进行性能测试
- 下一篇:如何测试Linux磁盘的读写速度?
相关推荐
- linux sed系列 第四篇:sed工业实战——日志处理与数据清洗
-
“掌握了sed的编程能力后,我们如同装备精良的工匠,终于可以踏入真实的工业战场。本篇将聚焦sed在日志分析、数据合规化、多文件批处理等场景中的应用,看它如何在海量数据中游刃有余,展现文本处理的...
- Linux下sed的简单使用(linux中sed是什么意思)
-
1、sed简介stremeditor流编辑器,它是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大,sed编辑器是一行一...
- linux基础命令之date命令(linux中的date)
-
date命令主要用于显示或者设置系统时间语法格式:date参数对象使用date命令时,最好先使用date--help命令查看支持哪些参数,有些小型Linux系统下的date命令,只支持一些基本参...
- Ubuntu linux 常用命令(ubuntu常用的50个命令)
-
使用dpkg命令来安装.deb包。sudodpkg-i~/example.deb如果在安装过程中遇到依赖问题,可以使用以下命令来修复:sudoapt-getinstall-f将flut...
- Linux基础命令-sed命令(linux教程:sed命令的用法)
-
Sed全名streameditor流编辑器,它是一个强大的文本处理工具,它可以从文件中接受输入,也可以接受来自标准输入流的输入,它擅长取行。Sed的用途非常广泛,包括:1)文本替换2)选择性的输...
- linux sed系列 第二篇:sed进阶技巧——地址定位与正则表达式
-
“上一篇我们掌握了sed的基础替换,如同获得了第一把钥匙。现在,让我们更进一步,学习如何精准锁定目标行,如同拥有了导航地图,让每一次操作都直击要害!”地址定位的四种维度sed的强大,很大程度上源...
- 火狐Firefox浏览器140发布:手动Unload标签页、优化翻译体验等
-
IT之家6月24日消息,Mozilla在发布版本139不到一个月后,推出了最新的开源网页浏览器Firefox140。新版本增加了手动Unload标签页的功能,优化了垂直标签页的调...
- Linux 基本正则表达式及扩展正则表达式功能举例
-
在Linux中,正则表达式(RegularExpression)是一种强大的模式匹配工具,用于在文本中查找、匹配和处理特定模式的字符串。Linux支持两种类型的正则表达式:基本正则表达式(Basic...
- linux下find命令的经典26个使用示例
-
简介find命令是基于unix的操作系统中常用的工具之一。顾名思义,它在目录层次结构中查找文件和目录。用户可以传递不同的参数,并根据文件的名称、扩展名、类型、大小、权限、修改时间、所有者、组等搜索文件...
- linux运维中特殊符号的应用与实践
-
路径位置类的特殊符号(1)、波浪线(~)在linux系统的命令行中,~表示用户的家目录,超级用户为/root,普通用户为/home。假设我当前目录在usr/local下[root@xrylocal]...
- 开源框架log4cpp实战(开源gui框架)
-
1.Log4cpp使用Log4cpp中主要包含Category(种类),Appender(附加器),Layout(布局),Priorty(优先级),NDC(嵌套的诊断上下文)。Category、App...
- Linux find命令详解(linux find -l)
-
一、命令介绍Linuxfind命令是类unix操作系统中最重要和最常用的命令行实用程序之一。find命令用于根据指定的条件搜索和定位与参数匹配的文件和目录列表。find命令提供了广泛的选项,允许用户...
- Linux运维:单引号与双引号的使用(linux 单引号和双引号)
-
1、单引号的使用单引号可以将它中间的所有任意字符还原为字面意义,实现屏蔽Shell元字符的功能。注意不可以在两个单引号中间单独插入一个单引号,单引号必须成对出现。示例1:定义一个变量,并输出变量的...
- Linux技巧:find 命令用法详细说明,看完会有收获
-
在Linux命令中,find是比较复杂难用的命令。使用该命令搜索文件时,常常发现自己找了一些例子能用,但稍微改一下条件,就搜不到想要的结果。下面会以一些实例来说明使用find命令的关键要点和...
- Linux Shell中单引号、双引号、反引号的解释
-
1、单引号('')单引号所见即所得,直接显示单引号里的内容。即单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。比如下面的例子,单引号所见即所得。2、双引号("...
- 一周热门
- 最近发表
-
- linux sed系列 第四篇:sed工业实战——日志处理与数据清洗
- Linux下sed的简单使用(linux中sed是什么意思)
- linux基础命令之date命令(linux中的date)
- Ubuntu linux 常用命令(ubuntu常用的50个命令)
- Linux基础命令-sed命令(linux教程:sed命令的用法)
- linux sed系列 第二篇:sed进阶技巧——地址定位与正则表达式
- 火狐Firefox浏览器140发布:手动Unload标签页、优化翻译体验等
- Linux 基本正则表达式及扩展正则表达式功能举例
- linux下find命令的经典26个使用示例
- linux运维中特殊符号的应用与实践
- 标签列表
-
- linux一键安装 (31)
- linux运行java (33)
- ln linux (27)
- linux 磁盘管理 (31)
- linux 内核升级 (30)
- linux 运行python (28)
- linux 备份文件 (30)
- linux 网络测试 (30)
- linux 网关配置 (31)
- linux jre (32)
- linux 杀毒软件 (32)
- linux语法 (33)
- linux博客 (33)
- linux 压缩目录 (37)
- linux 查看任务 (32)
- 制作linux启动u盘 (35)
- linux 查看存储 (29)
- linux乌班图 (31)
- linux挂载镜像 (31)
- linux 软件源 (28)
- linux题目 (30)
- linux 定时脚本 (30)
- linux 网站搭建 (28)
- linux 远程控制 (34)
- linux bind (31)