cpu相关
- 查看cpu、进程、内存、I/O等系统整体运行状态
vmstat 3
每隔3秒刷新一次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0
0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
字段说明:
Procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。
Memory(内存)
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
- 查看cpu使用率
top
Shift+P,按照进程处理器占用率排序 Shift+M, 按照进程内存占用率排序
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序。
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
- 查看io使用情况,也可以来查看cpu
iostat -c 1 2
- 每秒cpu使用率情况获取
dstat -c
- 最占cpu的进程获取
dstat --top-cpu
- 查看CPU型号
grep 'model\|MHz' /proc/cpuinfo |tail -n 2
网络操作
- 查看连接某服务端口最多的的IP地址
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
- 查看网络负载状况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 实时监控网卡流量(安装iftop)
/usr/local/iftop/sbin/iftop -i eth1 -n
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
ESTABLISHED:代表一个打开的连接
SYN-RECV:再收到和发送一个连接请求后等待对方对连接请求的确认
SYN-SENT:再发送连接请求后等待匹配的连接请求
CLOSING:等待远程TCP对连接中断的确认
CLOSED:没有任何连接状态
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
LISTEN:侦听来自远方的TCP端口的连接请求
- 查看tcp和udp 连接
netstat -nlput
- 现实本地IP
ifconfig | grep cast | cut -d':' -f2 | cut -d' ' -f1
- 验证网络管理器服务的状态
systemctl status NetworkManager.service
- 检查受网络管理器管理的网络接口
nmcli dev status
- 设置网络管理器服务为自启动服务
systemctl enable NetworkManager.service
- 查看目前启动的端口号
ss -ntl
文件操作
- 置空文件
cat /dev/null > filename
- 当前目录里边有多少文件
find . -maxdepth 1 -type f | wc -l
- 删除所有空目录
find /data -type d -empty -exec rm -rf {} ;
- 批量删除空文件(大小等于0的文件)
find /data -type f -size 0c -exec rm -rf {} ;
find /data -type f -size 0c|xargs rm –f
- 删除五天前的文件
find /data -mtime +5 -type f -exec rm -rf {} ;
centos 7 关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
PHP-FPM 查看
ps aux | grep php
显示php-fpm: pool www的代表work子进程(实际处理请求) 显示php-fpm: process master的代表master主进程(负责管理work子进程)
测试平均PHP子进程占用的内存
$ps auxf | grep php | grep -v grep
work 26829 0.0 0.0 715976 4712 ? Ss Jul11 0:00 php-fpm: master process (./etc/php-fpm.conf)
work 21889 0.0 0.0 729076 29668 ? S 03:12 0:20 \_ php-fpm: pool www
work 21273 0.0 0.0 728928 31380 ? S 03:25 0:21 \_ php-fpm: pool www
work 15114 0.0 0.0 728052 29084 ? S 03:40 0:19 \_ php-fpm: pool www
work 17072 0.0 0.0 728800 34240 ? S 03:54 0:22 \_ php-fpm: pool www
work 22763 0.0 0.0 727904 20352 ? S 11:29 0:04 \_ php-fpm: pool www
work 38545 0.0 0.0 727796 19484 ? S 12:34 0:01 \_ php-fpm: pool www
// 共占用的内存数量
$ps auxf | grep php | grep -v grep | grep -v master | awk '{sum+=$6} END {print sum}'
162712
// 所有的子进程数量
$ ps auxf | grep php | grep -v grep | grep -v master | wc -l
6
可以看到第6列,每一个子进程的内存占用大概在19-34M之间(单位为KB)。平均的内存占用为162712KB/6 = 27.1M
查看服务器总的内存大小
$ free -g
total used free shared buffers cached
Mem: 157 141 15 0 4 123
-/+ buffers/cache: 13 143
Swap: 0 0 0
可以看出服务器总得内存大小是157G(-g采用了G的单位)。
查看CPU个数
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
uniq命令:删除重复行;wc –l命令:统计行数
查看CPU核数
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看CPU型号
cat /proc/cpuinfo | grep 'model name' |uniq
model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
总结:该服务器有2个4核CPU,型号Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
查看内存总数
cat /proc/meminfo | grep MemTotal
MemTotal: 32941268 kB //内存32G
curl查看耗时 curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_appconnect}::%{time_redirect}::%{time_pretransfer}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" URL
time_namelookup :DNS 域名解析的时候,就是把 https://zhihu.com 转换成 ip 地址的过程
time_connect :TCP 连接建立的时间,就是三次握手的时间
time_appconnect :SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
time_redirect :从开始到最后一个请求事务的时间
time_pretransfer :从请求开始到响应开始传输的时间
time_starttransfer :从请求开始到第一个字节将要传输的时间
time_total :这次请求花费的全部时间