修改/etc/mongod.conf文件中的net section,优化网络绑定与端口设置:
bindIp设置为服务器具体IP(如192.168.1.100)或0.0.0.0(允许所有IP连接,生产环境不推荐),以控制允许访问的网络接口。例如:net:
bindIp: 192.168.1.100 # 仅允许该IP连接
port: 27017 # 默认端口,可根据需求修改
port为其他未被占用的端口(如27018),但需同步更新客户端连接配置。通过调整内核参数优化网络连接处理能力:
/etc/sysctl.conf,添加以下配置以提升并发连接数:fs.file-max = 1000000
net.core.somaxconn = 65535 # 监听队列最大长度
net.ipv4.tcp_max_syn_backlog = 65535 # SYN队列长度
net.ipv4.tcp_tw_reuse = 1 # 复用TIME-WAIT连接
应用配置:sudo sysctl -p。echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
为永久生效,可将上述命令添加到/etc/rc.local(需赋予执行权限)。使用ufw(Ubuntu默认防火墙)开放MongoDB端口,并限制访问来源:
sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp # 仅允许192.168.1.0/24网段访问
sudo ufw enable # 启用防火墙
sudo ufw status # 查看已开放的端口
若使用iptables,可执行:sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.0/24 -j ACCEPT(需保存规则)。为MongoDB启用身份验证,确保只有合法用户能访问:
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [{ role: "root", db: "admin" }]
})
/etc/mongod.conf,添加:security:
authorization: enabled
重启MongoDB服务使配置生效:sudo systemctl restart mongod。在/etc/mongod.conf的net section中,调整以下参数以适应高并发场景:
maxIncomingConnections设置允许的最大客户端连接数(默认10000,可根据服务器资源调整):net:
maxIncomingConnections: 50000
connectTimeoutMS(连接超时时间,默认10000ms)和socketTimeoutMS(socket超时时间,默认30000ms),避免长时间占用连接资源:net:
connectTimeoutMS: 5000
socketTimeoutMS: 60000
重启MongoDB服务使配置生效。使用MongoDB自带工具监控网络状态:
mongostat命令中的conn字段显示当前连接数,若接近maxIncomingConnections,需调整该参数。mongotop命令可查看集合级别的读写延迟,结合netstat -antp | grep mongod查看连接状态,定位高延迟连接。bindIp设置为0.0.0.0,应仅允许信任的IP地址访问。