linux性能分析及调优
所属分类 linux
浏览量 1514
操作系统版本查看
uname -a
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
查看物理cpu个数
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
查看每个物理cpu中的core个数
cat /proc/cpuinfo |grep "cpu cores"|wc -l
查看逻辑cpu的个数
cat /proc/cpuinfo |grep "processor"|wc -l
内存查看
free -m
free -h
查看硬盘及分区信息
fdisk -l
查看文件系统的磁盘空间占用情况
df -h
查看指定目录的大小
du -sh (默认当前目录)
du -sh ~
查看当前目录各目录占用大小
du -h -d 1 .
-d depth 用于设置目录深度
目录大小统计du命令实战
查看平均负载
uptime
查看过去1分钟、5分钟和15分钟平均负载情况
性能分析常用命令
top free vmstat iostat sar
vmstat,sar和iostat命令都包含在sysstat(系统监控工具)软件包中
vmstat - 内存,进程和分页等的简要信息。
iostat - CPU统计信息,设备和分区的输入/输出统计信息。
影响Linux服务器性能的因素
CPU
内存 物理内存 swap
磁盘I/O 剩余空间
网络I/O
top - 16:47:41 up 67 days, 2:15, 2 users, load average: 26.81, 27.24, 23.28
Tasks: 162 total, 1 running, 160 sleeping, 1 stopped, 0 zombie
%Cpu(s): 69.3 us, 12.3 sy, 0.0 ni, 14.7 id, 0.0 wa, 0.0 hi, 3.7 si, 0.0 st
KiB Mem : 65757620 total, 45692632 free, 11962676 used, 8102312 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 49913488 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2412 xxx 20 0 9.833g 1.330g 14788 S 426.9 2.1 126:29.99 java
2838 xxx 20 0 9820.9m 1.068g 14016 S 192.0 1.7 57:14.33 java
1273 xxx 20 0 9830.4m 3.410g 13996 S 57.5 5.4 19:16.02 java
每个逻辑cpu的负载 = 负载值/逻辑cpu个数
不大于3,则系统性能良好
不大于4,表示可以接受
大于5,则系统性能问题严重
wa 等待输入输出的CPU时间百分比 wa值越大 IO越频繁
free -h
total used free shared buff/cache available
Mem: 62G 11G 43G 3.1G 7.8G 47G
Swap: 0B 0B 0B
应用程序可用内存/系统物理内存<20%,表示系统内存资源紧缺,需要增加系统内存;
iostat -x
-x 显示扩展参数
avg-cpu: %user %nice %system %iowait %steal %idle
3.25 0.00 0.99 0.68 0.00 95.08
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.01 0.05 11.43 1.10 200.33 35.12 0.26 22.95 6.74 23.01 3.54 4.06
iostat -x 1 2 #显示两次间隔一秒
%util 接近100% 说明i/o请求过多。磁盘可能存在瓶颈。
vmstat -t 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st CST
14 0 0 45437824 0 8277540 0 0 0 25 1 0 3 1 95 1 0 2018-12-14 17:20:24
4 0 0 45437752 0 8277908 0 0 0 4 73621 130724 69 17 14 0 0 2018-12-14 17:20:25
43 0 0 45436716 0 8278148 0 0 0 4 72900 127950 68 15 17 0 0 2018-12-14 17:20:26
5 0 0 45434804 0 8278548 0 0 0 15 72681 133237 69 15 16 0 0 2018-12-14 17:20:27
17 0 0 45436104 0 8278860 0 0 0 5000 73167 134955 70 16 14 0 0 2018-12-14 17:20:28
-t 输出时间
vmstat -s 输出各种事件计数器和内存的统计信息
vmstat -d 输出所有磁盘的统计信息
ab 压测 nginx
nginx配置 conf/nginx.conf
worker_processes 32;
worker_connections 65536;
netstat发现很多TIME_WAIT
网络连接断开后,会有30秒的TIME_WAIT时间,如果并发过大会导致连接耗尽。
主动关闭(TIME_WAIT)
tcp知识点整理
端口范围查看
cat /proc/sys/net/ipv4/ip_local_port_range
1025 65535
配置连接复用和回收
/etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
/sbin/sysctl -p 让配置生效
--load[=] read values from file
不指定配置文件 默认 /etc/sysctl.conf
dmesg 查看错误日志
/var/log/dmesg
dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。
linux之dmesg命令总结
ab返回apr_socket_recv: Connection timed out (110)
dmesg查看系统错误信息显示大量nf_conntrack: table full, dropping packet 。
/etc/sysctl.conf
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
sysctl -p
netstat -ant|grep -i close_wait -c
close_wait 连接统计
-i 忽略大小写
ulimit 查看设置用户资源限制
linux ulimit命令总结
查看当前用户允许打开的文件数:
ulimit -n
(一般用户是1024)
设置当前用户允许打开的文件数:
ulimit -n 65535
linux性能监控常用命令
磁盘存储基础
频繁访问的文件或数据尽可能用内存读写代替直接磁盘I/O,效率高千倍。
将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。
对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。
裸设备优点:
数据可直接读写,不需经过操作系统级缓存,节省内存资源,避免内存资源争用;
避免文件系统级维护开销,如文件系统需维护超级块、I-node等;
避免了操作系统cache预读功能,减少了I/O请求
使用裸设备的缺点是:
数据管理、空间管理不灵活,需要很专业的人来操作。
上一篇
下一篇
lucene知识点整理
linux ulimit命令总结
linux之dmesg命令总结
linux系统性能分析工具sar总结
linux监控工具之nmon
简单小巧的linux监控工具saidar