测试机器为腾讯云服务器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
原文地址:https://blog.csdn.net/weiwenjuan0923/article/details/106555659
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。