nginx调优

本文中,红色字体为nginx调优建议值。 


 1. Linux系统资源限制配置调优

  linux资源限制配置文件是/etc/security/limits.conf;限制用户进程的数量对于linux系统的稳定性非常重要。
  limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。

  * soft nofile 655350 #任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
  * hard nofile 655350
  * soft nproc 655350 #任何用户可以打开的最大进程数
  * hard nproc 655350

hard和soft两个值都代表什么意思呢?soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。

永久设置可以打开的最大的文件描述符数量,操作如下:

#root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为655350,hard limit为655350。
* soft nofile 655350
* hard nofile 655350

2. nginx进程数的配置调优

  nginx服务启动后,会存在两个重要的进程

1. master进程,控制nginx的启动、停止、配置文件的重载。

2. worker进程,用于处理用户请求,将收到的请求转发的到后端服务端。

  worker进程的个数(默认初始值为1)可以在配置文件nginx.conf文件中进行配置,如下所示:

worker_processes  1;  #Nginx配置文件中 worker_processes指令后面的数值代表了nginx启动后worker进程的个数。

  worker进程的数量一般建议等于CPU的核数或者CPU核数的两倍。通过执行lscpu命令可以获取到CPU的核数。

  配置完成worker进程的数量后,还建议将每一个worker进程绑定到不同的CPU核上,这样可以避免出现CPU的争抢。将worker进程绑定到不同的CPU核时,可以通过在nginx.conf中增加worker_cpu_affinity 配置,例如将worker进程分配到4核的CPU上,可以按照如下配置进行配置。

worker_processes 4;

worker_cpu_affinity 0001 0010 0100 1000;  #0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

特别说明:1.9.10版本后,可以配置worker_processes 为auto。如下:

worker_processes auto;   #可以根据物理CPU自动设定,nginx启动后的worker进程数与实际cpu核数相等。
worker_cpu_affinity auto;

3. nginx客户端连接数的调优

  在高并发的请求调用中,连接数有时候很容易成为性能的一个瓶颈。nginx可以通过如下方式来调整nginx的连接数。

  配置nginx单个进程允许的客户端最大连接数(默认初始值为1024),可以修改nginx中的nginx.conf配置文件中的配置如下:

events {
    worker_connections  65535;
}

 4. nginx事件处理模型的调优

  为了性能得到最优处理,nginx的连接处理机制在不同的操作系统中一般会采用不同的I/O事件模型。在Linux操作系统中,一般使用epoll的I/O多路复用模型。如下:

events {
    worker_connections  65535;
    use epoll;
}
当涉及到Nginx和JVM的时,我们可以从两个方面来讨论。 首先是NginxNginx是一个高性能的Web服务器和反向代理服务器,以下是一些常见的Nginx方法: 1. 整worker_processes和worker_connections:根据服务器的硬件配置和负载情况,适当整worker_processes(工作进程数)和worker_connections(每个工作进程的最大连接数)参数,以提高并发处理能力。 2. 启用gzip压缩:开启gzip压缩可以减小传输的数据量,提高网站的响应速度。 3. 整缓冲区大小:通过整proxy_buffer_size、proxy_buffers和proxy_busy_buffers_size等参数,可以Nginx对后端服务器的请求和响应的缓冲区管理,提高性能。 4. 使用缓存:使用Nginx的缓存功能可以减轻后端服务器的负载,提高响应速度。可以通过配置proxy_cache和相关参数来启用缓存。 5. 负载均衡:通过配置upstream模块,可以实现Nginx的负载均衡功能,将请求分发到多个后端服务器上,提高系统的可用性和性能。 接下来是JVM的。JVM是Java虚拟机的缩写,以下是一些常见的JVM方法: 1. 整堆内存大小:通过整-Xms和-Xmx参数,可以设置JVM的初始堆大小和最大堆大小,以适应应用程序的内存需求。 2. 设置垃圾回收器:根据应用程序的特点和性能需求,选择合适的垃圾回收器,如Serial GC、Parallel GC、CMS GC或G1 GC,并通过相关参数进行配置。 3. 整线程数:通过整-Xss参数,可以设置线程栈的大小,以及通过整-XX:ParallelGCThreads参数来设置并行垃圾回收线程数,以提高并发处理能力。 4. 监控和分析工具:使用JVM提供的监控和分析工具,如jstat、jconsole、jvisualvm等,可以实时监控JVM的运行状态和性能指标,帮助定位性能瓶颈和化机会。 5. 代码化:通过对代码进行化,如减少对象的创建、避免过多的同步、合理使用缓存等,可以减少JVM的负载,提高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值