# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 开启SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1
# 开启并记录欺骗,源路由和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# 处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# 开启execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# 增加系统文件描述符限制
fs.file-max = 65535
# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768
kernel.pid_max = 65536
# Tcp窗口等
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 4096
net.ipv4.tcp_window_scaling = 1
# 不充当路由器
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 增加TCP最大缓冲区大小
net.ipv4.tcp_mem = 192000 300000 732000
net.ipv4.tcp_rmem = 51200 131072 204800
net.ipv4.tcp_wmem = 51200 131072 204800
#增大SYN队列的长度,容纳更多连接(默认值:128)
net.ipv4.tcp_max_syn_backlog = 4096
#针对TIME-WAIT,配置其上限(默认值:262144)。如果降低这个值,可以显著的发现time-wait的数量减少,但系统日志中可能出现如下记录:kernel: TCP: time wait bucket table overflow对应的,如果升高这个值,可以显著的发现time-#wait的数量增加。
net.ipv4.tcp_max_tw_buckets = 4096
#间隔多少秒发送1次keepalive探测包(默认值:7200)
net.ipv4.tcp_keepalive_time = 20
#探测失败后,间隔几秒后重新探测(默认值:75)
net.ipv4.tcp_keepalive_intvl = 5
#探测失败后,最多尝试探测几次(默认值:9)
net.ipv4.tcp_keepalive_probes = 2
# 设置较小的数值,可以有效降低orphans的数量
net.ipv4.tcp_orphan_retries = 3
#较低的系统重试率
net.ipv4.tcp_syn_retries = 3
# 表示本机向外发起TCP SYN连接超时重传的次数
net.ipv4.tcp_synack_retries = 3
# 在丢弃激活(已建立通讯状况)的TCP连接之前,需要进行多少次重试
net.ipv4.tcp_retries2 = 5
#TCP时间戳(默认值:60)
net.ipv4.tcp_fin_timeout = 30
# orphans的最大值(默认值:16384)
net.ipv4.tcp_max_orphans = 2000
#表示开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1
#针对TIME-WAIT,不要开启(默认值:0)。不少文章提到同时开启tcp_tw_recycle和tcp_tw_reuse,会带来C/S在NAT方面的异常。个人接受的做法是,开启tcp_tw_reuse,增加ip_local_port_range的范围,减小tcp_max_tw_buckets和tcp_fin_timeout的值
net.ipv4.tcp_tw_recycle = 1
# 减少交换内存使用,默认60,建议10-30;0为关闭。
vm.swappiness = 40
#表示强制Linux VM最低保留多少空闲内存(Kbytes)。
当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值
vm.min_free_kbytes=409600
#该项表示内核回收用于directory和inode cache内存的倾向:
缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比
降低该值低于100,将导致内核倾向于保留directory和inode cache
增加该值超过100,将导致内核倾向于回收directory和inode cache。
网上文章建议 sysctl -w vm.vfs_cache_pressure=200
其实一般情况下不需要调整,只有在极端场景下才建议进行调整,只有此时,才有必要进行调优,这也是调优的意义所在
vm.vfs_cache_pressure=200
#指定脏数据能存活的时间。在这里它的值是30秒。当 pdflush/flush/kdmflush 进行起来时,它会检查是否有数据超过这个时限,如果有则会把它异步地写到磁盘中。毕竟数据在内存里待太久也会有丢失风险。
vm.dirty_expire_centisecs = 1500
#指定多长时间 pdflush/flush/kdmflush 这些进程会起来一次。
vm.dirty_writeback_centisecs = 1000
#是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据被写进磁盘。这是造成IO卡顿的重要原因,但这也是保证内存中不会存在过量脏数据的保护机制。
vm.dirty_ratio = 2
#是内存可以填充“脏数据”的百分比。这些“脏数据”在稍后是会写入磁盘的,pdflush/flush/kdmflush这些后台进程会稍后清理脏数据。举一个例子,如有32G内存,那么有3.2G的内存可以待着内存里,超过3.2G的话就会有后来进程来清理它。
vm.dirty_background_ratio = 100