执行命令优化内核参数

  1. bash -c "$(curl -sS https://gitlab.biz.kuaicdn.cn/shell/centos/-/raw/main/kernel/kernel_init.sh)"
  1. #!/usr/bin/env bash
  2. __w_sysctl_99() {
  3. cat >/etc/sysctl.d/98-sysctl.conf <<"EOF"
  4. #【net】
  5. ######################## cat /proc/sys/net/ipv4/tcp_syncookies
  6. # 默认值: 1
  7. # 作用: 是否打开SYN Cookie功能, 该功能可以防止部分SYN攻击
  8. net.ipv4.tcp_syncookies = 1
  9. ######################## cat /proc/sys/net/ipv4/ip_local_port_range
  10. # 默认值: 32768 61000
  11. # 作用: 可用端口的范围
  12. net.ipv4.ip_local_port_range = 1024 65535
  13. ######################## cat /proc/sys/net/ipv4/tcp_fin_timeout
  14. # 默认值: 60
  15. # 作用: TCP时间戳
  16. net.ipv4.tcp_fin_timeout = 22
  17. ######################## cat /proc/sys/net/ipv4/tcp_timestamps
  18. # 默认值: 1
  19. # 作用: TCP时间戳
  20. net.ipv4.tcp_timestamps = 1
  21. ######################## cat /proc/sys/net/ipv4/tcp_tw_recycle
  22. # 默认值: 0
  23. # 作用: 针对TIME-WAIT, 不要开启。同时开启tcp_tw_recycle和tcp_tw_reuse, 会带来C/S在NAT方面的异常
  24. net.ipv4.tcp_tw_recycle = 0
  25. ######################## cat /proc/sys/net/ipv4/tcp_tw_reuse
  26. # 默认值: 0
  27. net.ipv4.tcp_tw_reuse = 0
  28. ######################## cat /proc/sys/net/ipv4/tcp_max_tw_buckets
  29. # 默认值: 262144
  30. # 作用: 针对TIME-WAIT, 配置其上限。如果降低这个值, 可以显著的发现time-wait的数量减少, 但系统日志中可能出现如下记录:
  31. # kernel: TCP: time wait bucket table overflow
  32. # 对应的, 如果升高这个值, 可以显著的发现time-wait的数量增加
  33. net.ipv4.tcp_max_tw_buckets = 20000
  34. ######################## cat /proc/sys/net/ipv4/tcp_max_orphans
  35. # 默认值: 16384
  36. # 作用: orphans的最大值
  37. net.ipv4.tcp_max_orphans = 3276800
  38. ######################## cat /proc/sys/net/ipv4/tcp_max_syn_backlog
  39. # 默认值: 128
  40. # 作用: 增大SYN队列的长度, 容纳更多连接
  41. net.ipv4.tcp_max_syn_backlog = 819200
  42. ######################## cat /proc/sys/net/ipv4/tcp_keepalive_intvl
  43. # 默认值: 75
  44. # 作用: 探测失败后, 间隔几秒后重新探测
  45. net.ipv4.tcp_keepalive_intvl = 30
  46. ######################## cat /proc/sys/net/ipv4/tcp_keepalive_probes
  47. # 默认值: 9
  48. # 作用: 探测失败后, 最多尝试探测几次
  49. net.ipv4.tcp_keepalive_probes = 3
  50. ######################## cat /proc/sys/net/ipv4/tcp_keepalive_time
  51. # 默认值: 7200
  52. # 作用: 间隔多久发送1次keepalive探测包
  53. net.ipv4.tcp_keepalive_time = 1200
  54. ######################## cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
  55. # 默认值: 432000
  56. # 作用: 设置 conntrack tcp 状态的超时时间, 如果系统出现下述异常时要考虑调整:
  57. net.netfilter.nf_conntrack_tcp_timeout_established = 600
  58. ######################## cat /proc/sys/net/netfilter/nf_conntrack_max
  59. # 默认值: 65535
  60. # 作用: 设置 conntrack 的上限, 如果系统出现下述异常时要考虑调整:
  61. # ping: sendmsg: Operation not permitted
  62. # kernel: nf_conntrack: table full, dropping packet.
  63. # 参考: https://blog.yorkgu.me/2012/02/09/kernel-nf_conntrack-table-full-dropping-packet/, http://www.cnblogs.com/mydomain/archive/2013/05/19/3087153.html
  64. net.netfilter.nf_conntrack_max = 655350
  65. ##########################################################################################
  66. ######################## cat /proc/sys/net/core/netdev_max_backlog
  67. # 默认值: 1000
  68. # 作用: 网卡设备将请求放入队列的长度
  69. net.core.netdev_max_backlog = 6000
  70. ######################## cat /proc/sys/net/core/somaxconn
  71. # 默认值: 128
  72. # 作用: 已经成功建立连接的套接字将要进入队列的长度
  73. net.core.somaxconn = 65536
  74. ######################## cat /proc/sys/net/core/rmem_default
  75. # 默认值: 212992
  76. # 作用: 默认的TCP数据接收窗口大小 (字节)
  77. net.core.rmem_default = 638976
  78. ######################## cat /proc/sys/net/core/wmem_default
  79. # 默认值: 212992
  80. # 作用: 默认的TCP数据发送窗口大小 (字节)
  81. net.core.wmem_default = 638976
  82. ######################## cat /proc/sys/net/core/rmem_max
  83. # 默认值: 212992
  84. # 作用: 最大的TCP数据接收窗口大小 (字节)
  85. net.core.rmem_max = 16777216
  86. ######################## cat /proc/sys/net/core/wmem_max
  87. # 默认值: 212992
  88. # 作用: 最大的TCP数据发送窗口大小 (字节)
  89. net.core.wmem_max = 16777216
  90. ######################## cat /proc/sys/net/ipv4/tcp_mem
  91. # 默认值: 94389 125854 188778
  92. # 作用: 内存使用的下限 警戒值 上限
  93. net.ipv4.tcp_mem = 94500000 915000000 927000000
  94. ######################## cat /proc/sys/net/ipv4/tcp_rmem
  95. # 默认值: 4096 87380 6291456
  96. # 作用: socket接收缓冲区内存使用的下限 警戒值 上限
  97. net.ipv4.tcp_rmem = 4096 87380 16777216
  98. ######################## cat /proc/sys/net/ipv4/tcp_wmem
  99. # 默认值: 4096 16384 4194304
  100. # 作用: socket发送缓冲区内存使用的下限 警戒值 上限
  101. net.ipv4.tcp_wmem = 4096 16384 16777216
  102. ##########################################################################################
  103. ######################## cat /proc/sys/net/ipv4/tcp_thin_dupack
  104. # 默认值: 0
  105. # 作用: 收到dupACK时要去检查tcp stream是不是 thin (less than 4 packets in flight)
  106. net.ipv4.tcp_thin_dupack = 1
  107. ######################## cat /proc/sys/net/ipv4/tcp_thin_linear_timeouts
  108. # 默认值: 0
  109. # 作用: 重传超时后要去检查tcp stream是不是 thin (less than 4 packets in flight)
  110. net.ipv4.tcp_thin_linear_timeouts = 1
  111. ######################## cat /proc/sys/net/unix/max_dgram_qlen
  112. # 默认值: 10
  113. # 作用: UDP队列里数据报的最大个数
  114. net.unix.max_dgram_qlen = 30000
  115. ######################## cat /proc/sys/net/ipv4/ip_forward
  116. # 默认值: 0
  117. # 作用: IPV4 转发,docker nat 模式用到
  118. net.ipv4.ip_forward = 1
  119. #【kernel】
  120. ######################## cat /proc/sys/kernel/randomize_va_space
  121. # 默认值: 2
  122. # 作用: 内核的随机地址保护模式
  123. kernel.randomize_va_space = 1
  124. ######################## cat /proc/sys/kernel/panic
  125. # 默认值: 0
  126. # 作用: 内核panic时, 1秒后自动重启
  127. kernel.panic = 1
  128. ######################## cat /proc/sys/kernel/core_pattern
  129. # 默认值: |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
  130. # 作用: 程序生成core时的文件名格式
  131. kernel.core_pattern = core_%e
  132. ######################## cat /proc/sys/kernel/sysrq
  133. # 默认值: 0
  134. # 作用: 是否启用sysrq功能
  135. kernel.sysrq = 0
  136. #【vm】
  137. ######################## cat /proc/sys/vm/min_free_kbytes
  138. # 默认值: 8039
  139. # 作用: 保留内存的最低值
  140. vm.min_free_kbytes=901120
  141. ######################## cat /proc/sys/vm/panic_on_oom
  142. # 默认值: 0
  143. # 作用: 发生oom时, 自动转换为panic
  144. vm.panic_on_oom=1
  145. ######################## cat /proc/sys/vm/min_free_kbytes
  146. # 默认值: 45056
  147. # 作用: 保留最低可用内存
  148. vm.min_free_kbytes=1048576
  149. ######################## cat /proc/sys/vm/swappiness
  150. # 默认值: 60
  151. # 作用: 数值 (0-100) 越高, 越可能发生swap交换
  152. vm.swappiness=20
  153. #【fs】
  154. ######################## cat /proc/sys/fs/inotify/max_user_watches
  155. # 默认值: 8192
  156. # 作用: inotify的watch数量
  157. fs.inotify.max_user_watches=8192000
  158. ######################## cat /proc/sys/fs/aio-max-nr
  159. # 默认值: 65536
  160. # 作用: aio最大值
  161. fs.aio-max-nr=1048576
  162. ######################## cat /proc/sys/fs/file-max
  163. # 默认值: 98529
  164. # 作用: 文件描述符的最大值
  165. fs.file-max = 13143808
  166. # 【bbr】
  167. net.core.default_qdisc=fq
  168. net.ipv4.tcp_congestion_control=bbr
  169. # 移动网络差优化
  170. net.ipv4.tcp_no_metrics_save = 1
  171. net.ipv4.tcp_slow_start_after_idle = 0
  172. EOF
  173. }
  174. __main() {
  175. __w_sysctl_99
  176. /sbin/sysctl -p /etc/sysctl.d/98-sysctl.conf
  177. }
  178. __main
  179. __help() {
  180. cat >/dev/null <<-'AEOF'
  181. bash -c "$(curl -sS https://gitlab.biz.kuaicdn.cn/shell/centos/-/raw/main/kernel/kernel_init.sh)"
  182. AEOF
  183. }