基础性能调优 一

转载 http://www.haiyun.me/

1.vmstat
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
如果r大于3或4,且id小于%50,则CPU是瓶颈。
wa经常不等于0,b中的队列较大,则IO是瓶颈。
如bi bo长期不等于0,则内存较小

2.iostat
iostat [ -c | -d] [ -k ] [ -t ] [ -x [device] ] [ <interval> [ <count> ] ]

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
avgrq-sz:平均每次IO操作的数据大小(扇区),即(rsec/s+wsec/s)/(r/s+w/s)
%util:一秒中有百分之多少的时间用于IO操作,即(r/s+w/s)*(svctm/1000)

如果%util较大代表IO请求太多,硬盘可能存在瓶颈。
如果avctm比较接近await,说明IO几乎没等待时间。
如果await远大于avctm,说明IO队列太长,应用响应时间也变长。
avgqu-sz队列长度也可衡量IO负荷的指标,avgqu-sz是单位时间内的平均值。
其它还可参考vmstat结果b参数(等待资源的进程数)和wa参数(IO等待所占用CPU时间百分比)

3.free
清空内存缓存
sync 
#先将缓存写入磁盘
echo 1 > /proc/sys/vm/drop_caches
#释放buffer cache
echo 2 > /proc/sys/vm/drop_caches
#释放page cache
echo 3 > /proc/sys/vm/drop_caches
#释放buffer cache和page cache

4.统计当前占用IO最高的10个进程
echo 1 >/proc/sys/vm/block_dump
dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10

5.htop
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
tar xvfz ncurses-5.9.tar.gz
cd ncurses-5.9
./configure
make
make install
wget http://sourceforge.net/projects/htop/files/htop/0.9/htop-0.9.tar.gz
tar zxvf htop-0.9.tar.gz
cd htop-0.9
./configure
make
make install

6.修改最大文件数限制
cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
查看特定进程限制
cat /proc/1526/limits

7.Linux禁止atime提高IO性能
cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults,noatime,nodiratime        1 1
mount -o remount /
mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw,noatime,nodiratime)

8.Linux服务器内核网络参数优化
net.ipv4.tcp_syncookies = 1
#启用syncookies
net.ipv4.tcp_max_syn_backlog = 8192
#SYN队列长度
net.ipv4.tcp_synack_retries=2
#SYN ACK重试次数

net.ipv4.tcp_fin_timeout = 30
#主动关闭方FIN-WAIT-2超时时间
net.ipv4.tcp_keepalive_time = 1200
#TCP发送keepalive消息的频度
net.ipv4.tcp_tw_reuse = 1
#开启TIME-WAIT重用
net.ipv4.tcp_tw_recycle = 1
#开启TIME-WAIT快速回收
net.ipv4.ip_local_port_range = 1024 65000
#向外连接的端口范围
net.ipv4.tcp_max_tw_buckets = 5000
#最大TIME-WAIT数量,超过立即清除
net.ipv4.tcp_syn_retries = 2
#SYN重试次数

net.ipv4.tcp_rmem = 4096 87380 4194304
#TCP接收缓冲大小,对应最小、默认、最大
net.ipv4.tcp_wmem = 4096 16384 4194304
#TCP发送缓冲大小,对应最小、默认、最大
net.core.rmem_max = 16777216
#最大发送套接字缓冲区大小
net.core.wmem_max = 16777216
#最大接收套接字缓冲区大小
net.core.netdev_max_backlog = 262144
#当网络接口接收速率比内核处理快时允许发到队列的数据包数目
net.core.somaxconn = 262144
#最大连接队列,超过导致连接超时或重传


你可能感兴趣的:(性能)