1.  查看CPU及内存使用排行

1)查看当前CPU及内存的整体使用情况

top  

2)可以使用以下命令查使用内存最多的10个进程

ps -aux | sort -k4nr | head -n 10

3)可以使用一下命令查使用CPU最多的10个进程

ps -aux | sort -k3nr | head -n 10

2. 服务器性能变慢的排查

1)查看整机性能

A. top

查看cpu与mem的使用率,主要基于load average

B. uptime

查看load average

2)查看CPU使用情况

A. vmstat

vmstat -n 2 3 : 每2s采样一次,总计采样3次

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位s),第二个参数是采样的次数

- procs

r:运行和等竺cpu的时间片的进程数,原则上1核CPU的运行队列不要超过2, 整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大;
b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等。
- cpu us:用户进程小号CPU时间百分比,us值高,用户进程消耗的CPU时间多,如果长期大于50%,优化程序;
sy:内核进程消耗的CPU时间百分比;
id:处于空闲的CPU百分比;
wa:系统等待IO的CPU时间百分比;
st:来自于一个虚拟机偷取的CPU时间的百分比;

B. mpstat

查看所有cpu核信息

mpstat -P ALL 2 :2s钟采样一次所有CPU的信息

C. pidstat

查看每个进程使用cpu的用量分解信息

pidstat -u 1 - p 进程号 : 查看进程cpu使用情况

3)查内存使用情况

A. free

free -g // GB为单位
free -m //MB为单位

经验值:

  • 应用程序可用内存/系统物理内存>70%内存充足
  • 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存
  • 20%<应用程序可用内存/系统物理内存<70%内存基本够用

B. pidstat

pidstat -p 进程号 -r 采样间隔秒数

4)硬盘使用情况

A. df

df -h  查看可视化效果好的碰盘使用情况

5)查看碰盘IO使用情况

A. iostat

查看碰盘I/O使用情况

iostat -xdk 2 3

碰盘块设备分布

  • rkB/s:每秒读取数据量KB;
  • wkB/s:每秒写入数据量KB;
  • svctm:I/O请求的平均服务时间,单位毫秒;
  • await:I/O请求的平均等待时间,单位毫秒;值越小,性能越好;
  • util:1s中用于I/O操作的比例(百分比)。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;

rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘;

B. pidstat

pidstat -d 采样间隔秒数 -p 进程号

5)查看网络IO使用情况

A. ifstat

默认本地没有,需要下载ifstat

ifstat 1  //查看各个网卡的in、out观察网络负载情况,程序网络读写是否正常,用于程序网络I/O优化,增加网络I/O带宽做参考

Linux实用命令及技巧的更多相关文章

  1. linux 常用命令及技巧

    linux 常用命令及技巧 linux 常用命令及技巧:linux 常用命令总结: 一. 通用命令: 1. date :print or set the system date and time 2. ...

  2. linux常用命令与技巧(不断添加与更新)

    linux常用命令:linux命令有很多,不去做全面的介绍与总结,这里只是记录在使用linux过程中遇到的常用命令和技巧,以便以后查阅. # mkdir -p /usr/local/src/ ##递归 ...

  3. 14: linux实用命令

    1.1 基本实用命令整理 1.查找大文件文件 du -sh ./*|grep G                 # 查看当前目录下个文件大于1G的文件夹 2.查找日志文件中 5xx数量,并进行排序 ...

  4. linux netcat命令使用技巧

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...

  5. 个人的Linux实用命令

    Linux下的命令有那么多,我不可能也不想去把每一个都记住,列举一些自己工作中很实用的命令,这些命令或许不是很常用,但是有时候却离不了. 1.网络方面 service iptables start/s ...

  6. Linux基础命令小技巧

    总结 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise L ...

  7. Linux实用命令整理

    说明 点击标题可进入详细讲解的章节 0. 基本命令 linux 基本命令整理 1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar. ...

  8. Linux实用命令行

    对于Linux命令,我在学习和使用过程中是有一个循序渐进的过程的.适合小白学习快速使用.大笑 跳转目录:cd +路径 例如:cd /home/workspace 查看某个文件,常用的是查看日志:tai ...

  9. Linux实用命令

    0. 基本命令 1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a 2. vim小结 2.1 ...

随机推荐

  1. hadoop hdfs hbase优化实例

    需求描述: 从hdfs中获取数据,字段url需要计算出url_type 通过进行hive的left outer join ,效率非常低.故将url的类型导入到hbase中,利用hbase快速查询的特点 ...

  2. uimgr 子控件主动往管理类注册自己

    /// <summary> /// 供UIBehaviour调用,UIBehaviour每个控件都会动态挂载,并且在awake里面调用,注册自己 /// </summary> ...

  3. mysql java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more than one time zone.

    连接数据库时报错: The server time zone value '?й???????' is unrecognized or represents more than one time zo ...

  4. Python3并发写文件

    使用python2在进行并发写的时候,发现文件会乱掉,就是某一行中间会插入其他行的内容. 但是在使用python3进行并发写的时候,无论是多进程,还是多线程,都没有出现这个问题,难道是python3的 ...

  5. modprobe 和 insmod 区别

    1 关于内核加载方式 1) insmod : insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址          举例说明: insmod pblk.ko     // 需要制定pbl ...

  6. 深入学习重点分析java基础---第一章:深入理解jvm(java虚拟机) 第一节 java内存模型及gc策略

    身为一个java程序员如果只会使用而不知原理称其为初级java程序员,知晓原理而升中级.融会贯通则为高级 作为有一个有技术追求的人,应当利用业余时间及零碎时间了解原理 近期在看深入理解java虚拟机 ...

  7. [redis]redis五种数据类型和应用场景

    一.String(字符串)字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础.字符串类型实际上可 ...

  8. fiddler抓取https的请求详解

    本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...

  9. spring boot系列(三)spring boot 配置spring data jpa

    数据库使用MySQL,ORM使用spring data jpa 1 因此需要再pom.xml文件中添加相应jar包.如下: <!-- 引入jap --> <dependency> ...

  10. Block代码块中使用局部变量注意点

    第一次写代码遇到报这个错,实在是想不通为什么,按常理应该是不会有问题,报错的呀??纠结了一会之后只好仔细查看报错原因咯,原来是: 当我们在block代码块中使用局部变量时,就会很容易出现如图的错误. ...