修改/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地址訪問。