Linux 优化

目录

TCP 连接优化

UDP 连接优化

系统初始化参数优化


TCP 连接优化

路由转发模式 net.ipv4.ip_forward = 1

net.ipv4.tcp_fin_timeout = 30 如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。

net.ipv4.tcp_max_syn_backlog = 10240 表示SYN队列的长度,默认为1024,加大队列长度为10240,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

UDP 连接优化

net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 修改UDP 缓冲区大小

系统初始化参数优化

1) 关闭防火墙、selinux
2) 配置合理的yum源
3) 关闭不需要的系统服务
4) 内核优化:
echo "ulimit -SHn 102400" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
    *           soft   nofile       102400
    *           hard   nofile       102400
    *           soft   nproc        102400
    *           hard   nproc        102400
EOF
系统磁盘优化
1)  磁盘分区方案
分区类型     分区的实际大小
/           1G-2G
/boot       32M-100M (启动分区,最多只要100M左右)
/opt        100M-1G (附加应用程序)
/tmp        40M-1000M
/home       2G-10G (如果需要单独分区。)
/usr        3G-10G 最少要500M左右,一般宽松的服务器要分到4-6G)
/usr/local  3G-15G (自已安装程序安装在此)
/var        >2G–硬盘余下全部空间 ( 最少300M-500M,一般2-3G,做服务器的话把上面余下的空间都分给它)
swap    物理内存的两倍(参考值)
2) 物理磁盘优化
 - raid 阵列选择
 - lvm逻辑卷选择
 - 磁盘类型选择
   - ext2:linux下标准文件系统,无日志记录(inode)功能
   - ext3:在ext2基础上增加了日志记录功能(inode),仅支持32000个目录
   - ext4: ext3的后续版本,linux2.6.28内核开始支持,无限子目录支持,快速fsck
   - xfs:高性能文件系统,linux3.10内核开始默认支持
读操作频繁:ext4 
写操作频繁:xfs
​
3) xfs 优化
格式化时的参数:
mkfs.xfs -d agcount=256 -l size=128m,lazy-count=1,version=2 /dev/diska1
挂载时的参数:
defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8,attr2,logbsize=256k
​
4) swap 分区优化
/proc/sys/vm/swappiness
当系统非常需要使用内存时,内核会把匿名内存(Anonymous memory)和System V的共享内存(shared memory)交换到磁盘上去,而真正的文件不需要交换到交换内存上去,而是直接写会到磁盘文件系统上(清掉page cache)。
调低/proc/sys/vm/swappiness时,核心倾向于不交换,主要用于更快的响应速度。如:apache、mysql
调高/proc/sys/vm/swappiness时,核心倾向于使用交换内存,主要用于繁忙的吞吐量。如:ftp

iostat:

参数说明:
rrqm/s:每秒合并放入驱动请求队列的读请求数(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)。
wrqm/s:每秒合并放入驱动请求队列的写请求数。
rsec/s:每秒发给磁盘设备的读请求数。
wsec/:每秒发给磁盘设备的写请求数。
rKB/s:每秒从磁盘设备读取的KB数。
wKB/s:每秒向磁盘设备写入的KB数。
avgrq-sz 平均每次请求大小,单位为扇区(512B)。
avgqu-sz 在驱动请求队列和在设备中活跃的平均请求数。
await: 平均I/O响应时间,包括在驱动请求队列里等待和设备的I/O响应时间(ms)。一般地系统I/O响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm:磁盘设备的I/O平均响应时间(ms)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长系统上运行的应用程序将变慢。
%util: 设备忙处理I/O请求的百分比(使用率)。在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
      既然avgrq-sz是合并之后的数字,小尺寸(16个扇区或者更小)可以视为无法合并的实际I/O负载的迹象。大尺寸有可能是大I/O,或者是合并的连续负载。输出性能里最重要的指标是await。如果应用程序和文件系统使用了降低写延时的方法,w_await可能不那么重要,而更应该关注r_await。
      对于资源使用和容量规划,%util仍然很重要,不过记住这只是繁忙度的一个度量(非空闲时间),对于后面有多块磁盘支持的虚拟设备意义不大。可以通过施加负载更好地了解这些设备:IOPS(r/s + w/s)以及吞吐量(rkB/s + wkB/s)。

vmstat:

1) procs:
- r列表示运行和等待cpu时间片的进程数,这个如果长期大于系统cpu个数,说明cpu不足,需要增加cpu
- b列表示在等待资源的进程数,比如等待I/O,或者内存交换等
​
2) procs标准:    r 不超过cpu进程数
3) swap标准:    si,so长期不为0,说明内存不足,需要加内存
4) io标准:    bi+bo超过1000,而且wa值较高,说明磁盘IO有问题,应提高磁盘读写性能
5) system标准:    
- us长期超过50%,用户进程消耗cpu,需要考虑优化程序或算法
- sy长期超过50%,内核消耗的cpu资源很多
- us+sy长期超过80%,说明可能cpu资源部足
- id cpu空闲的百分比
- wa 参考值20%,如果超过20%,说明io等待严重
cpu重点:r    cs  us  sy id  wa值的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值