数据库

数据库相关教程

📘 系统优化

内核相关参数

terminal
#############################################
# Debian 13 (Linux 6.x) Database Network Tuning
# for MySQL / PostgreSQL / Redis / MongoDB
# Safe and production-ready
#############################################

## ========== TCP 基础连接参数 ==========
# 允许 TIME_WAIT 套接字复用(现代安全模式)
net.ipv4.tcp_tw_reuse = 2

# 关闭已弃用的快速回收功能(已在 6.x 内核移除,但保持为安全习惯)
# net.ipv4.tcp_tw_recycle 已删除

# 调整主动关闭连接后的等待时间(FIN-WAIT-2 阶段)
net.ipv4.tcp_fin_timeout = 20

# 允许快速重用 TIME_WAIT 端口的连接时间戳机制(默认启用)
net.ipv4.tcp_timestamps = 1

# 启用 TCP SYN cookies 防御 SYN Flood 攻击
net.ipv4.tcp_syncookies = 1

# 半连接与全连接队列上限(影响高并发连接握手阶段)
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192

# 接收/发送队列 backlog(数据包层级)
net.core.netdev_max_backlog = 16384


## ========== Socket 缓冲区优化 ==========
# 提高系统 socket 缓冲区上限(内核级)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# 调整默认缓冲区大小(适中值,避免过高导致内存浪费)
net.core.rmem_default = 262144
net.core.wmem_default = 262144

# TCP 层自动缓冲区调节范围
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 增强内核自动调节 TCP 缓冲区能力
net.ipv4.tcp_moderate_rcvbuf = 1


## ========== 连接保持与长连接优化 ==========
# Keepalive 检测间隔与重试次数(防止空闲连接意外断开)
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5

# 限制孤儿连接数(防止 socket 泄漏)
net.ipv4.tcp_max_orphans = 65536

# 限制 TIME_WAIT socket 总数(防止占满内存)
net.ipv4.tcp_max_tw_buckets = 262144


## ========== 内核队列与端口范围 ==========
# 调整本地临时端口范围(默认 32768-60999,适当放宽)
net.ipv4.ip_local_port_range = 10240 65535

# 提高 backlog 队列过载时的丢包承受度
net.core.optmem_max = 25165824

# 禁用 ICMP Redirect 接收(安全考虑)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0


## ========== 性能与稳定性补充 ==========
# 启用快速路径(RPS/RFS 可视需求配置)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

#############################################
# End of DB Network Tuning
#############################################

Copyright © 2025. All rights reserved.