温馨提示×

如何在Ubuntu上优化MongoDB网络设置

小樊
32
2025-12-28 11:33:02
栏目: 云计算

Ubuntu上优化MongoDB网络设置的实用指南

一 基础网络与访问控制

  • 编辑配置文件:sudo nano /etc/mongod.conf,在 net 段设置监听地址与端口,生产环境建议仅绑定内网或管理网接口,避免使用 0.0.0.0 暴露到公网。示例:net: { bindIp: 192.168.1.100,127.0.0.1, port: 27017 }。完成后重启:sudo systemctl restart mongod
  • 防火墙精细化:仅允许可信网段访问 MongoDB 端口(默认 27017/TCP)。示例:sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp;sudo ufw enable && sudo ufw reload。
  • 启用认证与最小权限:在 security 段开启授权(security: { authorization: enabled }),并创建管理员账户(use admin; db.createUser({ user: “admin”, pwd: “StrongPassword123!”, roles: [{ role: “root”, db: “admin” }] })),确保远程访问必须鉴权。

二 传输加密与认证

  • 启用 SSL/TLS 强制加密:生成证书(示例:openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.pem -keyout mongodb-key.pem;cat mongodb-key.pem mongodb-cert.pem > mongodb.pem),在配置中启用:net: { tls: { mode: requireTLS, certificateKeyFile: /path/to/mongodb.pem } },重启服务生效。
  • 证书与权限安全:证书文件权限建议 600,属主 mongodb:mongodb;仅在内网可控环境使用自签名证书,跨公网或合规要求场景使用受信任 CA 签发证书。

三 操作系统网络与内核参数

  • 提升连接与队列能力:在 /etc/sysctl.conf 增加或调整:fs.file-max=1000000;net.core.somaxconn=65535;net.ipv4.tcp_max_syn_backlog=65535;net.ipv4.tcp_tw_reuse=1;net.core.rmem_max=16777216;net.core.wmem_max=16777216;net.ipv4.tcp_rmem=“4096 87380 16777216”;net.ipv4.tcp_wmem=“4096 16384 16777216”;net.ipv4.tcp_fin_timeout=30;net.ipv4.tcp_keepalive_time=600;net.ipv4.tcp_max_syn_backlog=8192,执行 sudo sysctl -p 生效。
  • 禁用透明大页(THP):echo “never” | sudo tee /sys/kernel/mm/transparent_hugepage/enabled;echo “never” | sudo tee /sys/kernel/mm/transparent_hugepage/defrag;为持久化可将命令加入系统启动脚本。

四 MongoDB网络参数与超时

  • 并发与超时:在 net 段按需调整最大连接数与超时,避免资源被长时间空闲连接占用。示例:net: { maxIncomingConnections: 20000–50000(视内存与文件描述符而定), connectTimeoutMS: 5000, socketTimeoutMS: 60000 }。
  • 压缩减少带宽:在客户端连接字符串启用压缩(如:mongodb://…/?compressors=zlib),在带宽敏感场景可显著降低网络流量。

五 监控验证与上线检查

  • 监听与连通性验证:ss -lntp | grep 27017 或 netstat -an | grep 27017 确认监听地址与端口;从应用端使用正确主机、端口与鉴权信息进行连接测试。
  • 运行时观测:使用 mongostat 查看当前连接数(conn)、操作吞吐与网络相关指标;使用 mongotop 观察集合级读写耗时,定位慢查询与热点集合;结合慢查询分析(operationProfiling: { mode: slowOp, slowOpThresholdMs: 100 })优化查询与索引。
  • 变更与回滚:所有网络与内核参数变更先在测试环境验证,按“配置调整 → 滚动重启 → 指标观测 → 回滚预案”的流程上线,确保峰值时段稳定。

0