一、默认值与查询方法
-
默认值
- 标准默认值:
net.core.somaxconn
的默认值为 128(适用于大多数 Linux 发行版)
- 标准默认值:
-
查询当前值
- 通过
sysctl
命令:sysctl net.core.somaxconn 或 sysctl -a | grep net.core.somaxconn
- 通过文件直接查看:
以上命令均可实时获取当前生效值cat /proc/sys/net/core/somaxconn
- 通过
二、合理设置建议
-
常规场景
- 低并发业务(如小型网站或个人服务器):保持默认值 128 即可满足需求
-
高并发场景
- Web 服务器/数据库:建议调整为 1024~4096,以提升 TCP 监听队列容量,避免因连接堆积导致请求被拒绝
- 容器化环境(如 Docker):若容器内应用需处理高并发请求,需确保宿主机和容器内的
somaxconn
均调整至合理值(例如 2048 或更高)
-
特殊场景
- 压测/突发流量:若压测中出现
Connection refused
错误,可将somaxconn
临时提升至 4096 或更高,缓解队列溢出问题4
- 压测/突发流量:若压测中出现
三、配置方法
-
临时生效
sysctl -w net.core.somaxconn=1024
此方式重启后失效
-
永久生效
- 修改
/etc/sysctl.conf
文件,添加以下内容:net.core.somaxconn = 1024
- 执行
sysctl -p
使配置生效
- 修改
四、注意事项
- 内核兼容性:部分旧版本内核可能限制最大值为 65535,建议通过实际测试确认上限
- 资源平衡:设置过高可能导致内存浪费,需结合系统资源(如内存、CPU)和业务负载综合评估