nginx优化配置

在使用java web container的时候,我们都在前面挡一层nginx,方便使用各种nginx的功能,设置成代理。 访问特别多的时候发现,服务器上存在大量的TIME_WAIT状态的连接。 经分析,可能是nginx早期版本的upstream还是使用的1.0的短连接代理,java container老是以1.0的方式主动断开进入TIME_WAIT状态,浪费了大量的连接。

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘



修改配置添加keepalive字段到upstream,nginx 与后端的服务器连接默认是使用的http 1.0,这个大家应该都了解,如果设置为HTTP1.1 复用链接的话就会大大降低了tcp开销,节省系统资源

upstream nginx_test {
       server 192.168.128.128:8080 weight=5;
       server 192.168.128.132:8080 weight=5;
       keepalive 20;
      # 设置持久连接时间。
    }

同时修改配置添加http1.1声明和header中connection重写。

server {
    location / {
        proxy_http_version 1.1; #开启对http1.1支持 
        proxy_set_header Connection ""; # 设置Connection为空串,以禁止传递头部到后端,http1.0中默认值Connection: close
        proxy_pass http://nginx_test;
   }
}


修改后TIME_WAIT大量减少十倍以上



其他优化配置

worker_processes 8;

nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。

开启的工作进程最好与你的硬件CPU个数一致,一味的加大processes,会使得系统的切换开销增大得不偿失

proxy_connect_timeout 180;
proxy_read_timeout 180;
proxy_send_timeout 180; //将nginx与后端的tomcat连接超时,上行超时,下行超时的时间都设置的尽量大,范围大并发的情况下出现502 504.

压缩打开

gzip  on;

events
{
use epoll;  #nginx事件处理模型,使用于Linux内核2.6版本及以后的系统
worker_connections 204800;  #ginx 单个进程的最大并发连接数
}

下面是关于系统连接数的优化

linux 默认值 open files 和 max user processes 为 1024

#ulimit –u

1024

问题描述: 说明 server 只允许同时打开 1024 个文件,处理 1024 个用户进程

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

新装的linux 默认只有1024 ,当作负载较大的服务器时,很容易遇到error: too many open files 。因此,需要将其改大。

解决方法:

使用 ulimit –n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)

有如下三种修改方式:

1. 在/etc/rc.local 中增加一行 ulimit -SHn 65535
2. 在/etc/profile 中增加一行 ulimit -SHn 65535
3. 在/etc/security/limits.conf 最后增加:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

具体使用哪种,在 CentOS 中使用第1 种方式无效果,使用第3 种方式有效果,而在Debian 中使用第2 种有效果

# ulimit -n

65535

 
时间: 2024-10-08 08:29:52

nginx优化配置的相关文章

Nginx 优化配置

nginx 优化配置查看隐藏版本号:curl -I http://192.168.106.138HTTP/1.1 200 okServer:nginx/1.12.0--------------------------------隐藏版本号方法 1-----------------------------------------vim /usr/local/nginx/conf/nginx.confhttp {include mime.types;default_type application/

nginx优化配置参考

#nginx启用的用户和组user nginx; #启动的工作进程数,一般配置为跟逻辑CPU核数一样worker_processes auto; #1个nginx进程可打开的最大文件描述符数目的数量worker_rlimit_nofile 51200; #记录严重错误日志error_log /var/log/nginx/error.log error; #运行的pidpid /run/nginx.pid; #加载其他模块配置include /usr/share/nginx/modules/*.c

Nginx优化—配置优化

完整配置如下所示: 1 user nginx; #运行的用户 2 pid /var/run/nginx.pid; 3 worker_processes auto; #定义了nginx对外提供web服务时的worder进程数,CPU核的数量.存储数据的硬盘数量及负载模式 4 worker_rlimit_nofile 100000; #更改worker进程的最大打开文件数限制,比'ulimit -a'多.解决"too many open files" 5 events { 6 worker

自己收集的nginx优化配置

server_tokens off; #关闭版本号keepalive_timeout 65 180; #设置超时是180秒client_header_timeout 80; #指定请求头的超时时间 client_body_timeout 80; #指定请求体超时时间 worker_proces 2;参数设置为2,和CPU核数相同,运行进程数设置多一些,响应客户端请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务的速度. work_processes 4:#工作进程数量

Nginx、Tomcat线上环境优化配置

 Nginx.Tomcat线上环境优化配置 Nginx优化: Nginx安全方面的优化: 1. nginx安全优化,在nginx配置文件http标签段内添加"server_tokens  off"即可隐藏访问或者报错时提示web版本号信息. 2. server_tokens参数可以在http,server,location的位置添加 3. 还可以修改nginx的3个源码文件 4. 如还需要安全优化更改端口.用户. nginx 性能优化: 对于nginx配置文件中对优化比较有作用的一般为

【nginx】配置优化

1.编译安装过程优化 在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字节.在编译前取消Nginx的debug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如下:在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,修改如下几行 sed -i '[email protected]="$CFLAGS -g"@#CFLA

CentOS6.5 Nginx优化编译配置

说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: epoll是Linux下 多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符 集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历

编译安装nginx及简单优化配置

一.背景 使用源码包安装lnmp架构及简单的优化配置 二.实验环境 rhel6.5 三.安装过程 1.nginx(提前装好gcc等编译器) (1) 下载源码包  http://nginx.org/ (2) tar -zxf nginx-1.8.1.tar.gz (3) cd nginx-1.8.1 vim auto/cc/gcc 修改第179行 (将本行注释,意为取消debug模式,) (4) ./configure --prefix=/usr/local/lnmp/nginx \ --with

nginx + SSL优化配置

nginx + SSL优化配置: 1 #http段添加如下配置项: 2 3 http { 4 5 ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件. 6 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #协议安全设置 7 ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #加密套件 ssl_ciph