Linux系统案例精解读书笔记

1、磁盘io

命令:iostat

r/s:当前每秒处理的读请求数
w/s:当前每秒处理的写请求数
resc/s:当前每秒读取的扇区数(在Linux中,每扇区为512Bytes)
wsec/s:当前每秒写入的扇区数
avgrq-sz:平均每次请求所提交的扇区数,包括读写。
avgrqu-sz:平均等待处理的队列长度,包括读写。当此值远大于每秒处理的读写总和时,出现瓶颈。
await:当前每个请求的平均等待时间,以ms为单位。
svctm:当前每个请求的平均处理时间,以ms为单位。
%util:当前由于等待磁盘I/O操作所占用的CPU时间。


计算当前系统每秒处理的请求数
(r/s+w/s)x await / 1000ms = 处理的请求数requess/s

计算当前磁盘的超载比率

avgqu-sz /(r/s+w/s) X 100 = 硬盘超载比率(%)


2、gnuplut 图形显示sa数据
yum -y install gnuplot


网络性能

   网络间的通信都必定存在网络延迟,并非每个TCP/IP请求都可以马上通过网络进行传输。因此当应用要求通过网络进行TCP/IP访问时,Linux内核会将这些访问请求及其数据存放到系统缓存中,缓存的计算方法如下:
1、通过ping得到目标系统的time值,如15ms
2、假设千兆网卡,连接速度为1000(mebibits)/8bit = 125(MiB)
3、计算:total buffers = Bandwidth * Delay time
代入数据: 125(MiB)* 0.015(s)= 1.875 (MiB) = 1966080 (Bytes)

通常建议网络中存储缓存最小值,默认值与当前计算的Total buffers相等,最大值为total beffuers的1.5倍,

UDP优化参数
修改文件/etc/sysctl.conf,加入以下几行:
net.ipv4.udp_rmem_min = 1966080
net.core.rmem_default = 1966080
net.core.rmem_max = 2949120
net.ipv4.udp_wmem_min = 1966080
net.core.wmem_default = 1966080
net.core.wmem_max = 2949120

TCP参数优化
修改文件/etc/sysctl.conf,加入以下几行:
net.ipv4.tcp_rmem = 1966080 1966080 2949120
net.ipv4.tcp_wmem = 1966080 1966080 2949120


apache:要求大量并发处理时使用MPM(多处理模式),可以是prefork或worker,通常只有一到两颗处理器的系统,prefork模式工作更好,多处理时,worker模式更好。

mysql:瓶颈大多在IO

进程统计日志

无故关机或无故被人删除文件时使用
/var/account/pacct或/var/account/acct

1、启动进程统计日志监控:
#accton  /var/account/pacct
2、显示进程统计日志情况:
#lastcomm
3、停止进程统计日志监控
#accton