首页  

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