测试机器为腾讯云服务器1核1G内存,swap分区2G,停用除SSH外的所有服务,仅保留nginx,优化思路主要包括两个层面:sysctl系统设置+nginx参数设置。
【 systemctl是systemd的管理工具, systemd复制管理系统和进程】
【 sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中】
第一步:sysctl系统设置
先查看--再改--再查看(不要直接上来就改,否则不知道是否改变)
## 打开文件数量
ulimit -a
ulimit -n 20480
【腾讯云服务器的,文件地址也是一样的,TCP属于OSI传输层协议,是底层,所有linux应该都是一样的】
【commond>file是将输出重定向到file,shell语法】
## TCP最大连接数
cat /proc/sys/net/core/somaxconn ##我的结果是128
echo 10000 > /proc/sys/net/core/somaxconn
##TCP连接立即回收、回用
cat /proc/sys/net/ipv4/tcp_tw_reuse ##我的结果是1,不需要改了
cat /proc/sys/net/ipv4/tcp_tw_recycle ##我的结果是1,不需要改了
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
cat /proc/sys/net/ipv4/tcp_syncookies ##我的结果是1
echo 0 > /proc/sys/net/ipv4/tcp_syncookies ## 屏蔽TCP异步
sysctl -p ## 设置生效
第二步:nginx参数设置
【参考链接4、5里面有更详细配置,可以参考】
【## worker 进程数应该设置为等于 CPU 的核数,高流量并发场合也可以考虑将进程数提高至 CPU 核数 *2 】
【 # 查看CPU核数 grep -c processor /proc/cpuinfo】
worker_processes 1;
worker_rlimit_nofile 20000; ##配置Nginx worker进程最大打开文件数
events
{
use epoll;
worker_connections 20000; ##单个进程允许的客户端最大连接数
multi_accept on;
}
http {
keepalive_timeout 0;
}
##重启nginx
【 命令格式 systemctl [command] [unit]】
systemctl restart nginx
————————————————
参考原文:
LNMP 高并发配置(解决上万并发量不是问题)https://blog.csdn.net/zha2008min/article/details/103438170
参考链接:
1. systemctl VS sysctl VS service VS init.d https://www.dazhuanlan.com/2019/12/13/5df2f21849302/
2. Linux ulimit命令 https://www.runoob.com/linux/linux-comm-ulimit.html
3. 常用的Linux下查看服务器配置的命令(命令结果没有具体的标注) https://blog.csdn.net/u011636440/article/details/78611838
4. nginx优化worker进程最大打开文件数worker_rlimit_nofile(作者也是转载,有原文链接) https://blog.csdn.net/weixin_34331102/article/details/91681934
我不放原文链接,是怕原文url有一天打不开了
5. nginx——优化 Nginx worker 进程数 https://www.cnblogs.com/qianbixueyuan/p/9518770.html
6. 怎样才算高并发? https://blog.csdn.net/jiaweiok123/article/details/87804081