Nginx学习(4)
来源:互联网 发布:录音数据恢复大师 编辑:程序博客网 时间:2024/06/05 14:31
Nginx的配置优化
内容
- 用户和组,生产环境下,最好是专门为Nginx创建用户和组,并单独设置权限,这样会更安全。
例:user nginx nginx - worker_processes: 通常设置成cpu的中核数,或者其2倍,性能会更好。这样可以减少进程间切换带来的消耗。
- 使用worker_cpu_affinity来绑定cpu,使得每个worker进程独享一个cpu,实现完全的并发,性能更好,不过这个只对linux系统有效。
- events里面的事件模型:linux推荐使用epoll模型,FreeBSD推荐使用kqueue。
- worker_rlimit_nofile:描述一个nginx进程打开的最多的文件数目。配置成跟linux内核文件打开数一致就可以了。
可以通过ulimit -n 来查看,新装的系统默认1024。
修改系统最大打开文件数
Centos:
file : /etc/security/limit.conf- soft nofile 65535
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
- worker_connections:每个进程允许的最多连接数,默认是1024,可以设置大一些。理论上并发总数是worker_processes和worker_connections的乘积,worker_connections的值设置跟物理内存大小有关,因为系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右,所以worker_connections的值需根据worker_processes进程数目和系统可以打开的最大文件总数进行适当地设置。
- keepalive_timeout:设置到65左右就可以。
- client_hearder_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重负载应用,可设置为off。
- Buffer size优化:如果buffer size 太小就会导致nginx使用临时文件存储response,这会引起磁盘读写IO,流量越大问题越明显。client_body_buffer_size 处理客户端请求体buffer大小。用来处理POST提交数据,上传文件等等。client_body_buffer_size 需要足够大以容纳需要上传的POST数据。同理还有后端的buffer数据。
- worker_priority进程优先级设置:linux系统中,优先级高的进程会占用更多的系统资源,这里配置的是进程的静态优先级,取值范围-20~+19,-20级别最高。因此可以把这个值设置小一点,但不建议比内核进程的值低(通常为-5)。
- 合理设置静态资源的浏览器缓存时间,尽量用浏览器缓存。
- 负载均衡锁accept_mutex,建议开启,默认就是开启的。
- 如果使用SSL的话,而且服务器上有SSL硬件加速设备的话,请开启硬件加速。
阅读全文
0 0
- Nginx学习(4)
- Nginx学习(4)---关于GDB调试Nginx
- nginx 学习(一)
- nginx学习(3)
- nginx学习(一)
- Nginx学习(一)
- Nginx学习(1)
- Nginx学习(2)
- Nginx学习(3)
- nginx学习(1)
- Nginx学习(1)
- Nginx学习(2)
- Nginx学习(3)
- Nginx学习(一)
- nginx学习(一)nginx安装
- Nginx源码学习(第零章):nginx安装
- Nginx学习(1)nginx安装
- 手把手学习nginx(一)
- spring boot启动类和自定义controller不在相同目录,controller扫描不到
- CentOS7 64位下MySQL5.7安装与配置(YUM)
- linux中的软件管理
- [APP] Samba 安装
- Android 中Application类的使用
- Nginx学习(4)
- linux下导入、导出mysql数据库命令
- zepto 源码分析1
- 当一个程序员写不出代码了_该怎么办?
- 字符串以及字符串常用函数
- hibernate一对多配置文件的写法
- 瀑布流
- python 学习笔记10-31-2017(聚类)
- 循环遍历两个,把相同的值放入第三个list里面