0
点赞
收藏
分享

微信扫一扫

nginx高并发优化之日志优化配置

一、配置

1、error日志:
默认配置在核心模块
error_log /www/log/nginx_error.log error;

2、access日志:
主要是通过日志缓冲,减少和磁盘日志文件的I/O操作
access_log /var/log/nginx/access.log main buffer=32k flush=1m;
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m
关闭静态资源的日志记录减少磁盘I/O
access_log off; # 关闭日志记录

二、说明

1、error日志

错误日志默认放在核心模块
Syntax: error_log file [level];
Default: error_log logs/error.log error; #默认的是error级别
Context: main, http, mail, stream, server, location

错误日志级别:常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。
生产场景一般是 warn | error | crit 这三个级别之一
注意:不要配置info等级较低的级别,会带来大量的磁盘I/O消耗。

debug-调试消息。
info -信息性消息。
notice -公告。
warn -警告。
error -处理请求时出错。
crit -关键问题。需要⽴即采取⾏动。
alert -警报。必须⽴即采取⾏动。
emerg - 紧急情况。系统处于⽆法使⽤的状态。

2、access日志

当系统处于负载状态时,启用日志缓冲区可以降低 nginx worker 进程阻塞。大量的磁盘I/O操作和 cpu 消耗对于服务器资源也是一种巨大的
消耗,将日志数据缓冲到内存中也是一个优化手段。使用缓冲,nginx 会等缓冲区满了之后一并写入到日志文件中,而不是每次访问都执行一
次单独的写操作。
要启用访问日志缓冲,可以直接在 access_log 配置后面追加配置,涉及到 buffer 和 flush 两个参数。buffer 参数意义是缓冲区的大小
,当缓冲区已经写满时,日志会被写入文件中; flush 参数意义是缓冲区内日志在缓冲区内存中保存的最长时间,当缓存中的日志超过最大
缓存时间,
也会被写入到文件中, 不足的地方即写入到日志文件的日志有些许延迟,一般即时调试时应当关闭日志缓冲。
access_log /var/log/nginx/access.log main buffer=32k flush=1m;
经过以上配置之后,当缓冲区中日志超过 32k 或者 超过 1m 时,缓冲区的日志会写入到 access.log 日志文件中。

open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m
max=1000 指的是日志文件的FD,最大的缓存数量为1000,超过了怎么办
inactive=20s
min_uses=3 20s内小于3次访问的FD,就给你清掉,结合inactive=20s的时间
valid=1m 检查周期为1分钟
总结:缓存最多1000个,到了极限,每分钟开始清除掉20s内小于3次的文件FD

关闭静态资源的日志记录减少磁盘I/O
server {
# 图片、视频
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d; # 将资源缓存30天
access_log off; # 关闭日志记录
}
# 字体
location ~ .*\.(eot|ttf|otf|woff|svg)$ {
expires 30d;
access_log off;
}
# js、css
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}

举报

相关推荐

0 条评论