服務(wù)器系統(tǒng)優(yōu)化
部署或壓測前,請先進(jìn)行系統(tǒng)優(yōu)化!!!
為什么要進(jìn)行服務(wù)器的系統(tǒng)優(yōu)化?
1.TCP端口限制
建立一個(gè)MQTT連接就需要占用一個(gè)TCP端口,因此需要進(jìn)行優(yōu)化
TCP 端口的范圍是從 1 到 65535。 在 Linux 系統(tǒng)中,0 到 1023 這些端口被稱為“知名端口”或“系統(tǒng)端口”,通常需要管理員權(quán)限才能使用。 1024 到 49151 是“注冊端口”,由特定的應(yīng)用程序或服務(wù)注冊使用。 49152 到 65535 是“動(dòng)態(tài)端口”或“私有端口”,可由普通用戶的應(yīng)用程序自由使用。 所以,Linux 系統(tǒng)默認(rèn)可供普通用戶自由使用的 TCP 端口數(shù)量是 16384 個(gè)(65535 - 49151 = 16384)。但需要注意的是,實(shí)際可用的端口數(shù)量可能會(huì)受到系統(tǒng)配置、已被占用的端口等因素的影響。 例如,如果某些服務(wù)或應(yīng)用程序已經(jīng)占用了部分動(dòng)態(tài)端口,那么實(shí)際可用的數(shù)量就會(huì)相應(yīng)減少。
2.全局最大文件句柄的限制
全局最大文件句柄的限制, 導(dǎo)致更多的TCP連接會(huì)失效
內(nèi)存分配策略
修改內(nèi)存分配
vi /etc/sysctl.conf
增加下面內(nèi)容
vm.overcommit_memory=1

執(zhí)行刷新
sysctl -p

系統(tǒng)全局最大文件句柄
sysctl -w fs.file-max=1048576
sysctl -w fs.nr_open=1048576
echo 1048576 > /proc/sys/fs/nr_open

設(shè)置服務(wù)的最大文件句柄
編輯服務(wù)句柄
vi /etc/systemd/system.conf
增加如下內(nèi)容
DefaultLimitNOFILE=1048576

設(shè)置用戶的最大文件句柄、最大文件句柄數(shù)
編輯用戶句柄
vi /etc/security/limits.conf
增加如下內(nèi)容
* soft nofile 1048576
* hard nofile 1048576

Tcp網(wǎng)絡(luò)優(yōu)化
并發(fā)連接優(yōu)化
sysctl -w net.core.somaxconn=32768
sysctl -w net.ipv4.tcp_max_syn_backlog=16384
sysctl -w net.core.netdev_max_backlog=16384

端口使用范圍
sysctl -w net.ipv4.ip_local_port_range='1024 65535'
