一、tuned 优化
RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-adm,其中 tuned 是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的;tuned-adm 是客户端程序,用来和 tuned 打交道,用命令行的方式管理和配置 tuned,tuned-adm 提供了一些预先配置的优化方案可供直接使用,比如:笔记本、虚拟机、存储服务器等。
#安装
[root@localhost ~]$ yum -y install tuned
#查看性能优化模板列表
[root@localhost ~]$ tuned-adm list
优化模板 | 用途 |
---|---|
balanced | 功耗和性能的平衡,只对CPU和磁盘做了调节 |
desktop | 适用与桌面设备,基于balanced策略 |
throughput-performance | 高吞吐量优化模式。它禁用电能节约机制,使sysctl设置提高吞吐量性能的磁盘、网络IO和转向最后期限的调度器。以获得最大吞吐量 |
latency-performance | 非常适合需要牺牲能耗来获取低延迟和服务器系统,低延迟的性能模式。它禁用电能节约机制,使sysctl设置提高延迟。 |
network-latency(网络延迟) | 它可以启用额外的网络调优参数,以提供低网络延迟,基于throughput-performance |
network-throughput(网络吞吐量) | 优化网络吞吐量,基于 throughput-performance |
powersave | 最节能的策略 |
oracle | 基于throughput-performance配置文件,针对Oracle数据库负载进行优化 |
virtual-guest | 当系统在虚拟机上运行时,调优系统以获得最高性能 |
virtual-host | 当系统充当虚拟机的主机时,调优系统以获得最高性能 |
查看当前优化方案
[root@localhost ~]$ tuned-adm active
Current active profile: balanced
查看推荐的优化方案
[root@localhost ~]$ tuned-adm recommend
balanced
切换优化方案:
[root@localhost ~]$ tuned-adm profile <profile_name>
二、sysctl 优化
sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys
目录下。sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf
文件,即可手工或自动执行由sysctl控制的功能。
命令格式:
[root@localhost ~]$ sysctl [-n] [-e] -w variable=value
[root@localhost ~]$ sysctl -w net.ipv4.ip_forward=1 # -w 用此选项来改变一个sysctl设置
[root@localhost ~]$ sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
[root@localhost ~]$ sysctl -p #从指定的文件加载系统参数
[root@localhost ~]$ sysctl [-n] [-e] -a
[root@localhost ~]$ sysctl -a #显示所有的系统参数
常用参数的意义:
-w 临时改变某个指定参数的值,如 sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
2.1 sysctl.conf内核参数详解
超详细解释
https://wws.lanzous.com/ibAKsmunp5a
密码:3j9g
#修改用户的
[root@localhost ~]$ vim /etc/security/limits.conf
* soft nproc 11000 #限制最多打开的软件数
* hard nproc 11000 #限制打开软件的最多进程数
* soft nofile 655350#限制最多打开的文件数
* hard nofile 655350#限制最多运行的进程数,一般设置为65535
#hard和soft的区别: soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。
#core是内核文件,nofile是文件描述符,noproc是进程,一般情况下只限制文件描述符数和进程数就够了
#修改系统的
[root@localhost ~]$ vim /etc/sysctl.conf
fs.file-max=65535
kernel.pid_max = 65535
[root@localhost ~]$ sysctl -p
修改最大线程数
查看用户打开到最大进程数
[root@localhost ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30624
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
#一个进程可打开的最大文件数
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 30624
#最大进程数量
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
#root 账号下 ulimit -u 出现到 max user processes 的值 默认是 # cat /proc/sys/kernel/threads-max 的值 / 2,即系统线程数的一半
#普通账号下 ulimit -u 出现的 max user processes 的值 默认是 /etc/security/limits.d/20-nproc.conf (centos6 是 90-nproc.conf) 文件中的
#/etc/sysctl.conf
[root@localhost ~]$ sysctl -a
#路由转发功能,默认为0是关闭的,如需要打开需要更改为1
net.ipv4.ip_forward = 1
#启用源路由核查功能
#1 通过反向路由回溯进行源地址验证(在RFC1812中定义)。对于单一主机和stub网络路由器推荐使用该选项。
#0 不通过反向路由回溯进行源地址验证。缺省值为0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#禁用所有IP源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
kernel.sysrq = 0
#控制core文件的文件名是否添加pid作为扩展
kernel.core_uses_pid = 1
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_syncookies = 1
#每个消息队列的大小(单位:字节)限制
kernel.msgmnb = 65536
#整个系统最大消息队列数量限制
kernel.msgmax = 65536
#禁用IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
#调整系统级别的文件描述符的数量
fs.file-max = 6553500
#调整系统级别的允许线程的数量
kernel.pid_max=1000000
###内存资源使用相关设定
vm.vfs_cache_pressure = 100000
vm.max_map_count = 262144
vm.swappiness = 0
#为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
net.core.wmem_default = 8388608
#为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
net.core.rmem_default = 8388608
#为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
#TCP读buffer
net.ipv4.tcp_rmem = 4096 8192 4194304
#TCP写buffer
net.ipv4.tcp_wmem = 4096 8192 4194304
##应对DDOS攻击,TCP连接建立设置
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 262144
##应对timewait过高,TCP连接断开设置
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65000
###TCP keepalived 连接保鲜设置
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
###其他TCP相关调节
net.core.somaxconn = 8192
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1