架构师日记——Nginx的配置优化
来源:互联网 发布:新兴重工查知的老婆 编辑:程序博客网 时间:2024/06/06 01:14
优化Nginx的配置,做到合理高效的使用
优化的方向和目标,无外乎:
1. 尽量提高单台机器处理效率
2. 尽量降低单台机器的负载
3. 尽量降低磁盘的I/O
4. 尽量降低网络I/O
5. 尽量减少内存使用
6. 尽量高效利用CPU
生产环境下,应该使Nginx模块最小化,就是用到哪几个就开哪几个,这个需要在编译安装Nginx的时候做
用户和组,最好是为Nginx创建用户和组,并单独设置权限,这用会更安全
worker_proceses:通常配置成cpu的总核数,或者其2倍,性能会更好,这可以减少进程间切换带来的消耗
还可以使用woker_cpu_affinity来绑定cpu,使得每个worker进程独享一个cpu,实现完全的并发,性能更好,不过这个只对Linux系统有效
events里面的时间模型,Linux推荐使用epoll模型,FreeBSD推荐采用kqueue
worker_rlimit_nofile:描述一个nginx进程打开最多的文件数目。配置成跟linux内核文件打开数一致就可以了。可以通过ulimit -n来查看,新装的系统默认是1024
worker_connnections:每个进程允许的最多连接数,默认是1024,可以设置大一些。理论上并发总数是worker_processes和worker_connections的乘积,worker_connections值的设置跟物理内存大小有关,因为系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右,所以,worker_connections的值需要根基worker_processes进程数目和系统可以打开的最大文件总数进行适当地进行设置
keepalive_timeout:设置到65左右就可以
client_header_buffer_size:设置请求的缓存, 设置为4k,通常为系统分页大小的整数倍,可以通过getconf PAGESIZE来车看系统分页大小
对打开文件设置缓存
- open_file_cache_max=建议设置成和每个进程打开的最大文件数一致 inactive=60s;
- open_file_cache_valid 90s;
- open_file_cache_min_uses 2;
- open_file_cache_errors on;
尽量开启Gzip压缩,gzip_comp_level通常设置成3-5,太高会浪费CPU
error日志优化:运行期间设置为crit,可以减少I/O
access日志优化:如果使用了其他统计软件,可以关闭日志,来减少磁盘写,或者写入内存文件,提高I/O效率
sendfile指定nginx是否调用sendfile函数(zero copy方式)来输出文件,通常设置为on,如果是下载等应用磁盘IO重负载IO负载应用,可设置为off
client_buffer_size优化:如果buffer_size处理客户端请求体buffer大小。用来处理POST提交数据,上传文件等。
client_body_buffer_size需要足够大以容纳需要上传的POST数据。桶里还有后端的buffer数据。
worker_priority进程优先级设置:Linux系统中,优先级高的进程会占用更多的系统资源,这里配置的是进程的静态优先级,取值范围-20到+19,-20级别最高。因此可以把这个值设置小一点,但不建议比内核进程的值低(通常为-5)
负载均衡锁accept_mutex,建议开启,默认就是开启的
如果使用SSL的话,而且服务器上有SSL硬件加速设备的话,请开启硬件加速
- 架构师日记——Nginx的配置优化
- 架构师日记——Nginx的HTTP模块配置
- 架构师日记——Nginx的Rewrite模块配置
- 架构师日记——Nginx简介
- 架构师日记——Nginx反向代理、动静分离和负载均衡
- nginx的配置优化
- nginx配置的优化
- 架构师日记——ActiveMQ使用场景和优化建议
- 架构师日记——Varnish的VCL子程序
- 架构师日记——Varnish的性能调优
- 架构师日记——理解Memcached的分布式方式
- 架构师日记——ActiveMQ简介
- nginx的配置与优化
- nginx的优化配置参数
- Nginx的SSL配置优化
- 【Nginx】Nginx配置优化
- Nginx优化配置优化
- Nginx源码分析—nginx的配置
- 堆排序
- CSU-ACM2017暑期训练4-dfs G
- Linux基础命令学习
- 利用numpy和pandas处理csv文件中的时间2
- bzoj2561: 最小生成树
- 架构师日记——Nginx的配置优化
- 市场研究中的数据分析知识整理 (三)-聚类分析
- AB1601之iic驱动改造
- bash: 一键安装 必备软件
- Linux下select, poll和epoll IO模型的详解
- maven 依赖的jar包打包问题
- Struts2知识点回顾(四)怎么传递对象参数?
- Java 线程
- Hibernate简单的拦截器原理