系统调优思路
性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义。具体步骤如下:
1. 系统的运行状况: CPU -> MEM -> DISK-> NETWORK -> application
2. 分析是否有瓶颈(依据当前应用需求)
3. 调优(采取一定措施使变得优异)
这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如:
大量的网页调入请求导致内存队列的拥塞;
网卡的大吞吐量可能导致更多的 CPU 开销;
大量的 CPU 开销又会尝试更多的内存使用请求;
大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO 问题;
所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统出现问题,其实有
可能是别的子系统导致的。调优就像医生看病,因此需要你对服务器所有地方都了解清楚。
1. 查看 CPU 负载相关工具
uptime
12:38:33 当前时间
up 50days 系统运行时间 ,说明此服务器连续运行 50 天了
3 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。 2. 找出系统中使用 CPU 最多的进程
运行 top 命令,按下大写的 P,可以按 CPU 使用率来排序显示
ps -aux --sort -pcpu | more #按 cpu 降序排序
查看CPU信息
cat /proc/cpuinfo
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等;
2、假如进程申请 100m 的内存,但实际只使用了 10m,那么它会增长 100m,而不是实际的使用量。
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括 swap out;
2、包含其他进程的共享;
3、如果申请 100m 的内存,实际使用 10m,它只增长 10m,与 VIRT 相反;
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小。
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存;
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
3、计算某个进程所占的物理内存大小公式:RES – SHR;
PR:任务调度优先级
NI:进程优先级 3. 使用 mpstat 查看 CPU 运行情况
yum install -y sysstat
mpstat
每列参数说明
usr:用户空间 CPU 使用占比。
nice:低优先级进程使用 CPU 占比。nice 值大于 0。
sys:内核空间 CPU 使用占比。
iowait:CPU 等待 IO 占比。
irq:CPU 处理硬中断占比。
soft:CPU 处理软中断占比。
idle:CPU 空闲时间占比。
guest 与 steal 与虚拟机有关
mpstat -P ALL #查看所有 CPU 运行状态
4. 查看 Memory 运行状态相关工具
free -m/-h
cat /proc/meminfo
运行 top,然后按下大写的 M 可以按内存使用率来排序显示

  

5. 查看 IO 运行状态相关工具
ext4 文件系统,查看文件系统块大小
tune2fs -l /dev/sda1 | grep size xfs 文件系统,查看文件系统块大小
xfs_growfs -l /dev/sda1 |grep bsize 6. 找出系统中对磁盘读写最多的进程
iostat -d -k -p /dev/sda
iostat 2 5
kB_read/s 每秒从磁盘读入的数据量,单位为K.
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K.
kB_read 读入的数据总量,单位为K.
kB_wrtn 写入的数据总量,单位为K iotop:
yum install -y iotop
-o, -only 只显示在读写硬盘的程序
-d SEC, -delay=SEC 设定显示时间间隔。 刷新时间
iotop 常用快捷键:
<- / ->:左右箭头:改变排序方式,默认是按 IO 排序。
r:改变排序顺序。
o:只显示有 IO 输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出,按 q 或 ctrl+C
iotop -o -d 1 #显示正在使用磁盘的进程

  

7.查看 Network 运行状态相关工具
yum install epel-release -y
yum install nload -y
nload #开始监控
安装ab命令
yum install -y httpd
ab -n 1000 -c 2 http://www.baidu.com/index.html #产生一些测试
数据 8.使用nethogs找出使用带宽最多的进程
nethogs-0.8.5-1.el7.x86_64.rpm 程序包下载:
wget
http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nethogs-0.8.5-1.el7.x86_64.rpm
rpm -ivh nethogs-0.8.5-1.el7.x86_64.rpm
nethogs开始监控

  

9. 查看系统整体运行状态
vmstat:命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写情况
每一列参数作用:r 运行状态的进程个数。展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
b 不可中断睡眠正在进行i/o等待--阻塞状态的进程个数进程读取外设上的数据,等待时
ree 剩余内存,单位是K
Bbuffers#内存从磁盘读出的内容
cached#内存需要写入磁盘的内容
si swapin swap换入到内存
so swapout 内存换出到swap 换出的越多,内存越不够用
bi blockin 从硬盘往内存读。单位是块。把磁盘中的数据读入内存
bo blockout从内存拿出到硬盘(周期性的有值)写到硬盘#判断是读多还是写多,是否有i/o瓶颈
in 系统的中断次数,cpu调度的次数多
cs 每秒的上下文切换速度
CPU上下文切换--程序在运行的时候,CPU对每个程序切换的过程。

  

10. 使用sar命令记录系统一段时间的运行状态
安装:yum -y install sysstat
sysstat 工具包可以把检查到的信息保存下来,存在/var/log/sa目录下。sar 默认显示每10分钟统计一次状态信息(从装sysstat包开始)
sar 命令行的常用格式:sar [options] [-A] [-ofile] t [n]在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
下面只列出常用选项:
-A:所有报告的总和。
-n:网络接口的情况。 sar -n DEV
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
-o 文件名:打印到屏幕并将采样结果以二进制形式存入当前目录下的文件中。
-f 文件名:查看之前保存的二进制文件。
-d:显示磁盘。-d 1 100 #必须得指定次数。-c:每秒创建进程的个数。
-i 1 10 #指定时间间隔。
-P:查看cpu。
-r:查看内存。
-w:每秒上下文切换次数。
sar -u 2 5 -o cpu.sar#屏幕显示以一下内容,同时内容也会写到当前目录的./cpu.sar中
在显示内容包括:%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,%idle 值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
使用参数-n查看网络接口流量情况:sar -n DEV 1 10 -o net.sar
sar -n DEV -f /var/log/sa/sa04 #查看网络相关信息。
sar -r -f /var/log/sa/sa15 -r 查看内存
sar -d -f /var/log/sa/sa16 -d:磁盘使用报告
sar 最大特点是可以监控所有状态,sar 的其他使用方法如下:
sar -r 1 #查看内存
sar -n ALL #查看所有
sar -b 1 10 #缓冲区使用情况,每秒刷新一次,查看 10 次
sar -I ALL 1 10
sar -r -f /tmp/file -n -r -b -m
sar -s 15:00:00 -e 15:30:00 #查看某个时间段,系统运行情况
sar -s 15:00:00 -e 15:30:20 -f /var/log/sa/sa01
sar -r -s 15:00:00 -e 15:30:20 -f /var/log/sa/sa01

  

  

  

linux系统调优工具的更多相关文章

  1. 转载linux性能调优工具

    Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具,各种资源应有尽有,大量干货,强烈建议收藏.

  2. linux 性能调优工具参考 (linux performance tools)

    之前发现几张图对于linux使用者有着较强的参考意义,下面对其进行简单备忘: # linux 静态信息查看工具 # linux 性能测试工具 benchmark # linux 性能观测工具 # li ...

  3. tuned linux 性能调优工具

    tuned 是redhat 提供的一套系统调优工具,使用简单,同时也提供了比较全的分类. 参考资料 https://github.com/redhat-performance/tuned

  4. Linux系统调优1

    Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分: 有上图可以看出,我们可以调整的有应用程序,库文件,内核,驱动,还有硬 ...

  5. Linux系统调优相关工具

    一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...

  6. Linux系统调优——CPU(一)

    (1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况:  CPU -> MEM  -& ...

  7. Linux系统调优

    Linux核心参数都是放置在/proc下面:系统的参数都是放置在/proc/sys swap最好放置在运行最快的硬盘上面,但是swap并能取代ram,因为并有I/O上面的损耗,所以优先考虑检验内存没有 ...

  8. Linux系统调优——内核相关参数(五)

    修改内核参数有3种办法:一种临时修改,两种永久修改. 临时修改是使用sysctl [选项] [参数名=值]命令:永久修改是修改/etc/sysctl.conf文件或修改/proc/sys/目录下的对应 ...

  9. Linux系统调优——网络(四)

    (1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...

随机推荐

  1. 高精度减法(C++实现)

    高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本文中,我们默认输入的第一个数为被减数,且被减数大于减数 原理基本上与高精度加法相同,仅 ...

  2. Linux内核--链表结构(一)

    一.前言 Linux内核链表结构是一种双向循环链表结构,与传统的链表结构不同,Linux内核链表结构仅包含前驱和后继指针,不包含数据域.使用链表结构,仅需在结构体成员中包含list_head*成员就行 ...

  3. Java学习day8

    今天学习了package,import,final,static和多态 package可以理解为文件夹,因为有些类可能重名,如果在同一个目录下就无法正常实现,所有需要有不同的包来装对应的类 Java出 ...

  4. Java语言学习day29--8月04日

    今日内容介绍1.Object2.String3.StringBuilder ###01API概念 * A:API(Application Programming Interface) * 应用程序编程 ...

  5. Blazor 组件库 BootstrapBlazor 中Editor组件介绍

    组件介绍 Editor组件是对Summernote 组件的二次封装. 组件分为div模式和editor模式. 默认状态下editor模式的组件样子如下: 其代码如下: <Editor @bind ...

  6. javaScript深拷贝和浅拷贝简单梳理

    在了解深拷贝和浅拷贝之前,我们先梳理一下: JavaScript中,分为基本数据类型(原始值)和复杂类型(对象),同时它们各自的数据类型细分下又有好几种数据类型 基本数据类型 数字Number 字符串 ...

  7. KTL 一个支持C++14编辑公式的K线技术工具平台 - 第六版,支持OpenGL,3D上帝视角俯视K线概貌。

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...

  8. SpringBoot程序预装载数据

    简介 在项目实际的开发过程中,有时候会遇到需要在应用程序启动完毕对外提供服务之前预先将部分数据装载到缓存的需求.本文就总结了常见的数据预装载方式及其实践. 适用场景 预装载应用级别数据到缓存:如字典数 ...

  9. LINUX系统虚拟机环境的安装

    安装VM和Centos Step 1 去BIOS里修改设置开启虚拟化设备支持 设置BIOS: 1.开机按F2.F12.DEL.ESC等进入BIOS,一般来说可以看屏幕的左下角有提示按键进入BIOS,进 ...

  10. 修复Arch Linux和Manjaro Linux无法显示emoji的问题

    安装好Arch Linux或Manjaro Linux系统后默认没办法正常显示emoji,通常会变成方框或者带有unicode码的方块: 这是因为缺失字体以及相关的字体配置导致的. 当然也有一小部分应 ...