执行命令优化内核参数

  1. bash -c "$(curl -sSL https://bd-rce.coding.net/api/user/bd-rce/project/shell/shared-depot/lts-tools-v10/git/blob/master/kernel/v6.2.1-t2023022801/sysctl_conf.sh | jq -r '.data.file.data')"
  1. #!/usr/bin/env bash
  2. __sysctl_conf_98() {
  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 60999
  11. # 作用: 可用端口的范围
  12. net.ipv4.ip_local_port_range = 10000 60999
  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. # 默认值: 16384
  30. # 作用: 针对TIME-WAIT, 配置其上限。如果降低这个值, 可以显著的发现time-wait的数量减少, 但系统日志中可能出现如下记录:
  31. # kernel: TCP: time wait bucket table overflow
  32. # 对应的, 如果升高这个值, 可以显著的发现time-wait的数量增加
  33. net.ipv4.tcp_max_tw_buckets = 300000
  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. # 默认值: 88305 117740 176610
  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. ######################## cat /proc/sys/net/ipv4/tcp_thin_dupack
  103. # 默认值: 0
  104. # 作用: 收到dupACK时要去检查tcp stream是不是 thin (less than 4 packets in flight)
  105. net.ipv4.tcp_thin_dupack = 2
  106. ######################## cat /proc/sys/net/ipv4/tcp_thin_linear_timeouts
  107. # 默认值: 0
  108. # 作用: 重传超时后要去检查 tcp stream 是不是 thin (less than 4 packets in flight)
  109. net.ipv4.tcp_thin_linear_timeouts = 1
  110. ######################## cat /proc/sys/net/unix/max_dgram_qlen
  111. # 默认值: 512
  112. # 作用: UDP队列里数据报的最大个数
  113. net.unix.max_dgram_qlen = 30000
  114. ######################## cat /proc/sys/net/ipv4/ip_forward
  115. # 默认值: 0
  116. # 作用: IPV4 转发,docker nat 模式用到
  117. net.ipv4.ip_forward = 1
  118. #【kernel】
  119. ######################## cat /proc/sys/kernel/randomize_va_space
  120. # 默认值: 2
  121. # 作用: 内核的随机地址保护模式
  122. kernel.randomize_va_space = 1
  123. ######################## cat /proc/sys/kernel/panic
  124. # 默认值: 0
  125. # 作用: 内核 panic 时, 1秒后自动重启
  126. kernel.panic = 1
  127. ######################## cat /proc/sys/kernel/core_pattern
  128. # 默认值: |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
  129. # 作用: 程序生成core时的文件名格式
  130. kernel.core_pattern = %e.kernel.core
  131. ######################## cat /proc/sys/kernel/sysrq
  132. # 默认值: 16
  133. # 作用: 是否启用sysrq功能
  134. kernel.sysrq = 0
  135. #【vm】
  136. ######################## cat /proc/sys/vm/min_free_kbytes
  137. # 默认值: 67584
  138. # 作用: 保留内存的最低值
  139. vm.min_free_kbytes=1048576
  140. ######################## cat /proc/sys/vm/panic_on_oom
  141. # 默认值: 0
  142. # 作用: 发生oom时, 自动转换为panic
  143. vm.panic_on_oom=1
  144. ######################## cat /proc/sys/vm/swappiness
  145. # 默认值: 30
  146. # 作用: 数值 (0-100) 越高, 越可能发生swap交换
  147. vm.swappiness=0
  148. #【fs】
  149. ######################## cat /proc/sys/fs/inotify/max_user_watches
  150. # 默认值: 8192
  151. # 作用: inotify的watch数量
  152. fs.inotify.max_user_watches=8192000
  153. ######################## cat /proc/sys/fs/aio-max-nr
  154. # 默认值: 65536
  155. # 作用: aio最大值
  156. fs.aio-max-nr=1048576
  157. ######################## cat /proc/sys/fs/file-max
  158. # 默认值: 377032
  159. # 作用: 文件描述符的最大值
  160. fs.file-max = 13143808
  161. # 【bbr】
  162. net.core.default_qdisc=fq
  163. net.ipv4.tcp_congestion_control=bbr
  164. # 移动网络差优化
  165. net.ipv4.tcp_no_metrics_save = 1
  166. net.ipv4.tcp_slow_start_after_idle = 0
  167. # 网桥优化
  168. net.bridge.bridge-nf-call-arptables=0
  169. # 设置为0可以禁用arptables对网桥流量的处理, 可以提高性能。默认值为1。
  170. net.bridge.bridge-nf-call-ip6tables=0
  171. # 设置为0可以禁用ip6tables对网桥流量的处理, 可以提高性能。默认值为1。
  172. net.bridge.bridge-nf-call-iptables=0 #
  173. # cat /proc/sys/net/bridge/bridge-nf-call-iptables
  174. # 设置为0可以禁用iptables对网桥流量的处理, 可以提高性能。默认值为1。
  175. net.bridge.bridge-nf-filter-pppoe-tagged=0
  176. # 设置为0可以禁用网桥对PPPoE标记数据包的过滤规则, 可以提高性能。默认值为1。
  177. net.bridge.bridge-nf-filter-vlan-tagged=0
  178. # 设置为0可以禁用桥接VLAN标记的过滤规则, 可以提高性能。默认值为1。
  179. net.bridge.bridge-nf-pass-vlan-input-dev=0
  180. # 设置为1可以提高网桥对带有VLAN标记的数据包的转发性能。默认值为0。
  181. EOF
  182. }
  183. __main() {
  184. __sysctl_conf_98
  185. /sbin/sysctl -p /etc/sysctl.d/98-sysctl.conf
  186. }
  187. __main
  188. __help() {
  189. cat >/dev/null <<-'AEOF'
  190. bash -c "$(curl -sSL https://bd-rce.coding.net/api/user/bd-rce/project/shell/shared-depot/lts-tools-v10/git/blob/master/kernel/v6.2.1-t2023022801/sysctl_conf.sh | jq -r '.data.file.data')"
  191. AEOF
  192. }