当前位置:首页 > 教程 > 正文内容

nginx设置会话连接(nginx设置最大连接数)

2023-04-22 01:40:07教程1

nginx设置最大连接数

TCP 配置是 Nginx 中一个比较关键的属性,它可以控制 Nginx 传输协议。当配置 Nginx 时,需要注意以下几点:

1. Nginx 中的 tcp 配置有三个参数:接收缓冲区大小(rcvbuf)、发送缓冲区大小(sndbuf)和最后一次活动(linger)。

2. 接收缓冲区和发送缓冲区的大小的单位都是字节,且一般都要大于或等于4K,通常情况下,接收缓冲区要大于发送缓冲区。

3. linger 有三个属性,即: on(开启)、off(关闭)和 timeout(超时),当开启时,Nginx 在服务器关闭连接之前,会将发送缓冲区中的未完成数据发送出去,而 timeout 属性则可以设定超时时间,默认超时时间为0,即Nginx不会考虑超时时间。

4. 在配置 Nginx 时,要根据实际情况调整 tcp 参数,以获得最佳性能。

nginx最大请求时长和最大请求头的设置

Nginx报504 gateway timeout错误引起,一个是文件配置问题,另一个是相关处理时长了,最后也有可能是资源不足导致了,下面我们一起来看看。

解释如下:

最近在工作中,需要做Excel导入的功能,由于Excel的数据比较多,而且我们的服务端程序需要对数据的内容做校验,会调用很多的外部服务接口,所以毫无悬念的导入Excel接口调用超过了一分钟,并且报错:504 gateway timeout。以下是两种解决思路:

1. 优化业务代码

一个接口调用超过一分钟,一定有可以优化的地方,看看数据库或者接口的调用是否合理,是否可以合并请求。

2. 修改Nginx的服务器配置

如果实在是优化不了了,可以把Nginx的超时时间上调。看看时间是否符合要求,在nginx.config里面的三个参数:

fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;

以上的单位是秒。

如果使用了Nginx的代理,可以在块里加上:

proxy_connect_timeout 300s;proxy_send_timeout 300s;proxy_read_timeout 300s;

变成:

location /foo { proxy_pass http://xxx.xxx.xxx.xxx:8080/foo; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; access_log /var/log/nginx/access.foo.log main; error_log /var/log/nginx/error.foo.log;}

如果没有解决我们再来看看

从错误代码基本可以确定跟nginx本身无关,主要是提交给php-fpm的请求未能正确反馈而导致,一般情况下,提交动态请求的时候,nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器,但 我这个vps目前跑的是个纯php应用内容,实际上用户所有的请求都是php请求,有的耗费时间比较久,php-cgi进程就一直都被用满,而php- fpm本身的配置文件只打开了10组php-cgi进程,这样的话在线用户稍微多的话就会导致请求无法被正常处理而出错。 大概分析出了原 因,下面做就比较容易了,首先是更改php-fpm的几处配置: 把max_children由之前的10改为现在的30,这样就可以保证 有充足的php-cgi进程可以被使用; 把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。

nginx最大连接数

nginx配置如下: 

 

1、定义worker进程数: 

worker_processes 10;

 

2、定义worker进程可同时服务请求数目:

worker_connections 1024;

 

3、禁止使用sendfile函数:

sendfile off;

 

4、开启空闲连接的文件检查:

linger_on_close on;

 

5、定义多个进程间通信存放文件路径及名称:

pid /var/run/nginx.pid;

 

6、定义用户和组:

user nobody nogroup;

 

7、定义worker进程数量:

worker_processes 10;

 

8、定义最大请求进程时间:

client_body_timeout 10; 

 

9、定义服务的超时时间:

send_timeout 10;

 

10、打开目录列表功能:

autoindex on;

nginx 最大连接

把端口都用完了这种情况我就真实遇到过,某大学的nat服务器,学校很吝啬,老大一片宿舍区,就6个公网ip,有一段时间线路改造,就剩俩好用的,12万个端口,假如每人100个链接,就只够1200人用,那个宿舍区至少有3000多人,然后就出现了莫名其妙的上不了网

本来网络维修期间网络不好没人在乎,我当初好奇,研究了一下,让我大开眼界,是第一次见到端口不够用的情况

当时尝试了把端口占用超时时间缩短了一点,改善有限,毕竟是太不够用了,如果缩的再多,短于连接心跳包的时间,就会莫名其妙掉线了

nginx最大访问量

LAMP:使用的是Apache,Apache是世界是用排名第一的Web服务器软件,其几乎可以在所有广泛使用的计算机平台上运营,由于其跨平台和安全性被广泛使用,是最流行的Web服务端软件之一。

LNMP:使用的是Nginx,Nginx是一款高性能额Http和反向代理服务器,也是一个AMAP/POP3/SMTP服务器,Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日,2011年6月1日,nginx 1.0.4发布。

在lamp中,php是作为apache的一个模块,被apache加载并调用。 当处理php脚本时,是由apache来完成的,而实际上我们应该说是apache的模块libphp5.so 处理的。

nginx就不一样了,nginx后面有php-fpm服务,这个php-fpm服务作为独立的服务存在,可以监听ip:port 也可以监听socket,真正处理php脚本的工作是由php-fpm来完成的,而nginx仅仅是把用户的请求发给php-fpm,然后再把php-fpm的处理结果发给用户。

再总结一下,apache因为把php模块集于一身成为一个整体,任何请求访问(静态,动态)都是apache(httpd)自己搞定的, 而nginx仅仅是一个传递的角色。它可以处理静态(图片,js,css等),但php相关的就得由后面的php-fpm来处理。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98790660.html