1. nginx.conf 配置文件
|
2.nginx.pid文件
2.1 什么是 var/run/nginx.pid文件?
var/run这个目录包含描述系统启动以来系统信息的数据。此文件夹下的文件必须在启动过程初期清除(删除或归零)。程序可以在/var/run下有自己的子文件夹。原先放在/etc下的进程标识(PID)文件必须放在/var/run里面。PID文件的命名惯例是
nginx.pid存放的是nginx的master进程的进程号。
2.2 nginx启动报错找不到nginx.pid
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
|
3.Worker Processess 说明
通常来说设置一个cpu核心对应一个worker processer,最多不超过4个,提高worker process的值是为了提高计算能力,但一般在越到cpu瓶颈前,你会遇到别的瓶颈(如网络问题)只有当你要处理大量静态文件的磁盘I/O时,worker进程是单线程的,所以这个读取文件的阻塞IO会降低CPU的处理速度,这是可以增加worker进程数量,其它情况是不需要的。
|
4.Worker进程连接数优化(worker_connections)
worker_connections选项设置每个worker进程一次可以处理的最大连接数。 默认情况下,worker连接限制为512,但系统可以处理比这值更多的连接。 适当的值可以通过测试得出。
系统的核心限制也可以通过使用ulimit找到
|
5.HTTP和TCP优化
5.1 Keep Alive:减少浏览器重新连接的次数
- keepalive_timeout和keepalive_requests 控制保持活动设置。
- sendfile 优化Nginx提供文件系统的静态文件服务的性能,如logo。
- tcp_nodelay 允许Nginx使TCP发送多个缓冲区作为单独的数据包。
- tcp_nopush 通过激活TCP堆栈中的TCP_CORK选项来优化一次向下游发送的数据量。TCP_CORK阻塞数据,直到分组到达MSS,这等于MTU减去IP报头的40或60字节。
5.2 服务处于TIME_WAIT 状态的 TCP 连接数异常的原因
keepalive_requests 参数限制了一个 HTTP 长连接最多可以处理完成的最大请求数, 默认是 100。当连接处理完成的请求数达到最大请求数后,将关闭连接
而我并没有配置 keepalive_requests,所以,就是使用的默认数 100,即一个长连接只能处理一百个请求,然后 Nginx 就就会主动关闭连接,使大量连接处于 TIME_WAIT 状态
6. Buffers size优化
调整缓冲区大小可能是有利的。 如果缓冲区大小太低,那么Nginx将写入一个临时文件。 这将导致过多的磁盘I/O。
- client_body_buffer_size 处理客户端缓冲区大小。 大多数客户端缓冲区都来自POST方法表单提交。 128k通常是此设置的不错选择。
- client_max_body_size 设置最大body缓冲区大小。 如果请求中的大小超过配置的值,则会将413(请求实体过大)错误返回给客户端。 不过浏览器无法正确显示413错误。 将大小设置为0将禁用对客户机请求正文大小的检查。
- client_header_buffer_size 处理客户端头大小。 默认情况下,1k通常是一个合理的选择。
- large_client_header_buffers 设置客户端头的缓冲区的最大数量和大小。 4个报头与4k缓冲区应该足够了。
- output_buffers 设置用于从磁盘读取响应的缓冲区的数量和大小。 如果可能,客户端数据的传输将被推迟,直到Nginx至少具有要发送的数据的字节数的集合大小。 零值禁止推迟数据传输。
7. 超时设置
超时设置还可以大幅提高性能。
- client_body_timeout 指令设置服务器等待客户端完成发送body的最大时间。
- client_header_timeout 指令设置服务器等待客户端完成发送header的最大时间。
- sent_timeout 指定对客户端的响应超时。 此超时不适用于整个传输,而是仅应用于两个后续的客户端读取操作之间。 因此,如果客户端没有读取任何数据这段时间,那么Nginx关闭连接。
8.静态资源服务
如果您的网站提供静态资源(如CSS/JavaScript/images),Nginx可以缓存这些文件很短的时间。
|
还可以缓存特定位置的资源,缓存文件很长时间是有好处的。如放在具体某个服务配置中..
|
9.Gzip压缩内容
|