Ubuntu-性能服务器参数优化
Created At :
确保 IP 转发已启用
确保内核启用了 IP 转发功能。可以通过以下命令启用:
1
| sudo sysctl -w net.ipv4.ip_forward=1
|
为了使设置永久生效,可以编辑 /etc/sysctl.conf 文件,添加以下内容:
1 2 3 4 5
| net.ipv4.ip_forward = 1 fs.file-max = 1048576
fs.inotify.max_user_instances=25120 fs.inotify.max_user_watches=262144
|
然后运行以下命令应用配置:
增加sudo权限
sudo vim /etc/sudoers
1
| user ALL=(ALL:ALL) NOPASSWD: ALL
|
配置高并发服务器调小TCP协议的time_wait时间
查看网络节点的tcp连接状态,如果发现系统存在大量的TIME_WAIT状态的连接,通过调整内核参数解决:
然后执行以下命令让参数生效: sudo /sbin/sysctl -p
limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置
linux下ulimit参数调整
sudo vim /etc/security/limits.conf
1 2 3 4
| * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535
|
临时配置
1 2
| ulimit -SHn 65536 ulimit -n
|
limits.conf 和sysctl.conf区别在于limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置
改变系统最大打开文件数,需要修改 /etc/sysctl.conf 文件
sudo vim /etc/sysctl.conf
设置服务最大文件句柄数:
sudo vim /etc/systemd/system.conf
1
| DefaultLimitNOFILE=1048576
|
配置网络参数修改
sudo vim /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
1 2
| [Service] TimeoutStartSec=5sec
|
Linux 操作系统参数
系统全局允许分配的最大文件句柄数:
2 millions system-wide
1 2 3
| sudo sysctl -w fs.file-max=2097152 sudo sysctl -w fs.nr_open=2097152 sudo echo 2097152 > /proc/sys/fs/nr_open
|
TCP 协议栈网络参数
1 2 3
| sudo sysctl -w net.core.somaxconn=32768 sudo sysctl -w net.ipv4.tcp_max_syn_backlog=16384 sudo sysctl -w net.core.netdev_max_backlog=16384
|
可用知名端口范围:
1
| sudo sysctl -w net.ipv4.ip_local_port_range='1000 65535'
|
TCP Socket 读写 Buffer 设置:
1 2 3 4 5 6 7 8 9
| sudo sysctl -w net.core.rmem_default=262144 sudo sysctl -w net.core.wmem_default=262144 sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216 sudo sysctl -w net.core.optmem_max=16777216
#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216' sudo sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216' sudo sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'
|
TCP 连接追踪设置
1 2 3
| sudo sysctl -w net.nf_conntrack_max=1000000 sudo sysctl -w net.netfilter.nf_conntrack_max=1000000 sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
|
Failed to allocate directory watch: Too many open files
解决办法:
vim /etc/sysctl.conf
sudo vim /etc/sysctl.conf
1 2 3
| fs.file-max = 1048576 fs.inotify.max_user_instances=25120 fs.inotify.max_user_watches=262144
|
生效
sudo sysctl -p
转载请注明来源。若文章内容存在错误、过期信息或更优解法,欢迎在仓库中提出修正。