学习目标:
linux操作系统性能优化主要几个方面的考虑:
- 内核参数优化配置
- 文件系统参数优化配置
- 网络IO优化配置
- 内存管理优化配置
- 内存的合理使用和检测
学习内容:
配置项以虚拟文件系统的形式体现
文件目录 | 参数类型 |
---|---|
/proc/sys/kernel/* | 内核相关配置参数 |
/proc/sys/net/* | 网络相关配置参数 |
/proc/sys/vm/* | 内存管理相关配置参数 |
/proc/sys/fs/* | 文件系统相关配置参数 |
系统安装优化
磁盘的划分
- raid 0:写操作频繁而对数据安全性要求不高
- raid 1:对数据安全性要求高,对读写没特别要求
- raid 5:对读操作要求高,写操作无特殊要求,并要保证数据安全性
- raid 01:读写要求都很高,并且对安全性要求也高
配置项修改方法
1、echo value > /proc/sys/subsys/item | 立即生效,重启后丢失 |
2、编辑“/etc/sysctl.conf”,添加 subsys.item = value | 不生效,重启后生效 |
3、sysctl -p /etc/sysctl.conf | 使/etc/sysctl.conf的内容立即生效 |
内存使用和查看
1:多使用Cache+Buffer
LINUX系统内存管理的原则为:尽可能多的使用Cache+Buffer,减少SWAP分区的使用,以提高性能。Cache的占用会提高虚存的命中率,从而提高系统性能。因此在系统运行一段时间后,内存都被cached占用,used也会提高。
2:内存占用率查看方法
在Linux上,cache为文件缓存,与文件相关,只包含文件内容。除此之外还有buffer即block buffer,是块设备读写操作的block缓存,与块设备相关。Linux共享内存是被当作文件缓存处理,cache中包含了已经占用的共享内存。所以计算当前剩余内存时,为free + buffers + cached。但是这里需要排除cache里面正在使用的共享内存部分(比如数据库正在使用的共享内存此时就不能drop)。
文件缓存可以通过执行如下命令drop:
linux:/proc # echo 3 > /proc/sys/vm/drop_caches #执行此命令时建议先执行sync
命令将所有未写的系统缓冲区写到磁盘中
0:不释放(系统默认值) 1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存
执行以上命令后,系统当前没有使用到的文件缓存会被丢弃,再次查看cached所占用的内存大小就是linux正在使用的共享内存部分。
vm.min_free_kbytes=102400 #表示强制Linux VM最低保留多少空闲内存
网络相关配置
net.ipv4.ip_forward=1 #接口间转发报文
net.core.rmem_default=8388608 #默认的TCP数据接收窗口大小(字节)
net.core.rmem_max=8388608 #最大的TCP数据接收窗口(字节)
net.core.somaxconn=4096 #定义了系统中每一个端口最大的监听队列的长度,是个全局参数,该参数指的是处于ESTABLISHED的数量上限
net.core.wmem_default=8388608 #默认的TCP数据发送窗口大小(字节)
net.core.wmem_max=20971520 #最大的TCP数据发送窗口(字节)
net.ipv4.tcp_keepalive_intvl=30 #探测消息未获得响应时,重发该消息的间隔时间(秒)
net.ipv4.tcp_keepalive_probes=3 #在认定TCP连接失效之前,最多发送多少个keepalive探测消息
net.ipv4.tcp_keepalive_time=3000 #TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效
net.ipv4.tcp_max_syn_backlog = 4096 #指的是还在三次握手的半连接的上限
net.ipv4.ip_nonlocal_bind=1 #允许非本地IP地址socket监听,当主机作为网关、反向代理或负载均衡器实现双机热备高可用时,主机需要绑定监听虚拟VIP地址时,必须开启此项
net.ipv4.icmp_echo_ignore_broadcasts = 1 #忽略icmp广播,避免放大攻击
net.ipv4.icmp_ignore_bogus_error_responses = 1 #开启恶意icmp错误消息保护
文件系统参数优化配置
/proc/sys/fs/file-max
说明:配置系统全局打开文件数量上限,包括socket、pipe等,实际上就是句柄数。
配置方法举例:在shell提示符下输入命令 echo 6553560 > /proc/sys/fs/file-max
-
soft nproc 65535 #可打开的文件描述符的最大数(软限制)
-
hard nproc 65535 #可打开的文件描述符的最大数(硬限制)
/etc/security/limits.conf
说明:设置当前shell以及由它启动的进程的资源限制。
配置方法举例:修改/etc/security/limits.conf并加入以下配置: -
soft nofile 65535
-
hard nofile 65535