|

网站程序是 asp.net core 开发的,浏览器请求一个页面,服务器需要经过 nginx 反向代理到 .net 程序处理,在压测的时候,会报 503 错误:
503 Service Temporarily Unavailable
503是一种HTTP状态码,由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
一般来说,出现503错误多半是因为网站访问量大,造成了流量超限或者并发数大引起的资源超限出现的错误。
根据木桶原理分析,性能的瓶颈有多方面的因素,首先 Linux 调优参考如下:
通过专业的压测工具,压测结果如下:
Nginx 调优
worker_processes 设置成自动,如下:
让 nginx 根据需求自动调整。
events 设置如下:
使用epoll模式,增加并发连接数,增加nginx系统并发连接能力,同时,设置工作进程可以同时打开的最大连接数。文档介绍:http://nginx.org/en/docs/events.html
调优后,再进行压测,没有再出现 503 错误了,如下图:
如果使用 nginx 反向代理转发到 php-fpm,还有可能报错如下:
2022/01/16 16:08:01 [crit] 968#0: *12955 open() "/alidata/www/itsvse_web/50x.html" failed (24: Too many open files), client: 100.116.153.2, server: www.itsvse.com, request: "GET /forum.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.itsvse.com"
2022/01/16 16:08:01 [alert] 968#0: *12956 socket() failed (24: Too many open files) while connecting to upstream, client: 100.116.153.109, server: www.itsvse.com, request: "GET /forum.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.itsvse.com"
2022/01/16 16:08:01 [crit] 968#0: *12956 open() "/alidata/www/itsvse_web/50x.html" failed (24: Too many open files), client: 100.116.153.109, server: www.itsvse.com, request: "GET /forum.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.itsvse.com"
设置 worker_rlimit_nofile 参数,如下:
文档:http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile
(完)
|
上一篇:【转】Ubuntu、CentOS、RedHat 的区别与联系下一篇:OceanBase 数据库管理工具下载
|