linux性能优化参数小节
总结一些和性能相关的常见参数
内核相关参数
位于/etc/sysctl.conf
文件,向文件中添加
用sysctl -a
可以查看默认配置
修改后可以通过sysctl -p
执行并看看有没有错误
例如设置错了参数:
net.core.somaxconn=65535
一个端口最大的监听TCP连接的队列长度
net.core.netdev_max_backlog=65535
数据包速率比内核处理块时 允许送到队列的数据包的最大数目
net.ipv4.tcp_max_syn_backlog=65535
TCP syn队列的最大长度 第一次握手的连接 参数过大可能也会遭受syn flood攻击
net.ipv4.tcp_fin_timeout=10
fin超时时间 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_tw_reuse=1
开启重用
net.ipv4.tcp_tw_recycle=1
快速回收
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
缓冲区的默认值和最大值
net.ipv4.tcp_keepalive_time=120
keepalive的检测时间间隔 单位为秒
net.ipv4.tcp_keepalive_intvl=30
检测无效时 重发消息间隔
net.ipv4.tcp_keepalive_probes=3
检测无效时 最多重复确认次数
kernel.shmmax=4294967295
linux内核参数中最重要的参数之一
用于定义单个共享内存段的最大值
64位linux 可取最大值为物理内存值-1byte 建议值为物理内存一半
vm.swappiness=0
free -m Swap中的内容
风险:
- 降低操作系统性能
- 在系统资源不足下,容易被OOM kill掉
设置为0是告诉系统除非虚拟内存完全满了 否则不要使用交换区
增加资源限制
位于 /etc/security/limit.conf
* soft nofile 65535
* hard nofile 65535
- * 对所有用户有效
- soft 当前系统生效的设置
- hard 系统所能设定的最大值
- nofile 打开文件的最大数目
- 65535 限制的数量
- 需要重启系统生效
设置前:
之后open files的值会提高为65535
磁盘调度策略
/sys/block/devname/queue/scheduler
查看可通过cat /sys/block/sda/queue/scheduler
现在使用的cfq 可选的是noop和deadline
用echo写入可以立即生效
简介:
-
noop电梯式调度策略
实现了一个FIFO队列 倾向饿死读而利于写 对闪存设备 RAM和嵌入式系统是最好的选择 -
deadline 截止时间调度策略
确保了在一个截止时间内服务请求 这个截止时间是可调整的 而默认读期限短于写期限
对于数据库类应用是最好的选择 -
anticipatory 预料IO调度策略
本质上和deadline一样 但在最后一次读操作后 要等待6ms 才能继续进行对其他IO请求进行调度 将一些小写入流合并成一个大写入流 用写入延迟换取最大的写入吞吐量 适合写入较多的环境 比如文件服务器 对数据库环境表现很差 -
cfq 绝对公平算法
参考资料:
TCP/IP及内核参数优化调优