原文地址:NGINX高性能Web服务器详解(读书笔记) 作者:夏寥寥

第4章  Nginx服务器的高级配置

4.1 针对IPv4的内核7个参数的配置优化

说明:我们可以将这些内核参数的值追加到Linux系统的/etc/sysctl.conf文件中,然后使用如下命令使修改生效:
/sbin/sysctl -p

(1)net.core.netdev_max_backlog参数
表示当每个网络接口接收数据包的速度比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。默认值为128.
Nginx服务器中定义的NGX_LISTEN_BACKLOG的默认值为511.
(2)net.core.somaxconn参数
该参数用于调节系统同时发起的TCP连接数,默认值为128.在客户端存在高并发请求的情况下,该默认值较小,可能导致链接超时或者重传问题,我们可以根据实际需要结合并发请求数来调节此值。
(3)net.ipv4.tcp_max_orphans参数
该参数用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,没有与用户文件句柄关联的TCP套接字将立即被复位,同时给出警告信息。这个限制只是为了防止简单的Dos攻击。
(4)net.ipv4.tcp_max_syn_backlog参数
该参数用于记录尚未收到客户端确认信息的连接请求的最大值。对于128MB内存的系统来说,默认值是1204。小内存系统是128.
(5)net.ipv4.tcp_timestamps参数
该参数用于设定时间戳,可避免序列号的卷绕。当此值赋值为0时,禁用对于TCP时间戳的支持。对于Nginx服务器来说,建议关闭。
(6)net.ipv4.tcp_synack_retires参数
该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,一般赋值为1.
(7)net.ipv4.tcp_syn_retires参数
与上个参数类似,该参数设置内核放弃建立连接之前发送SYN包的数量,一般赋值为1.

4.2针对CPU的Nginx配置优化的2个指令

(1)work_process指令
用来设置nginx服务器的进程数。一般设置和CPU的核心数相同,或者倍数。
(2)work_cou_affinity指令
该指令用来为每个进程分配COU的工作内核。

4.3与网络连接相关配置的4个指令

(1)keepalive_timeout指令
用来设置Nginx服务器与客户端保持连接的超时时间。有2个设置选项,中间用空格隔开。
第一个选项指定客户端与连接保持活动的超时时间,在这个时间之后,服务器会关闭此连接;
第二个选项可选:指定了使用Keep_Alive消息头保持活动的有效时间,如果不设置它,Nginx服务器不会向客户端发送Keep_Alive消息头以保持与客户端某些浏览器的连接,超过设置的时间后,客户端就可以关闭连接,不需要服务器关闭了。
(2)send_timeout指令
用于设置Nginx服务器响应客户端的超时时间,这个超时时间仅针对两个客户端和服务器之间建立连接后,某个活动之间的时间,如果这个时间后客户端没有任何活动,Nginx服务器将会关闭连接。
(3)client_header_buffer_size指令
用于设置Nginx服务器允许的客户端请求头部的缓冲区大小,默认为1kb.此指令可根据系统分页大小来设置。获取分页大小的命令:getconf PAGESIZE

Nginx出现400错误,很大一部分情况是客户端的请求头部过大造成的。设置请求头部大小:
client_header_buffer_size 4k;
(4)multi_accept指令
用于配置Nginx服务器是否尽可能多的接收客户端的网络连接请求。默认值为off.

4.4与事件驱动模型相关的配置的8个指令

(1)use指令
用于指定Nginx服务器使用的事件驱动模型;

(2)worker_connections指令
用于设置Nginx服务器的每个工作进程允许同时连接客户端的最大数量。
Client=worker_processes * worker_connections/2.

(3)worker_rlimit_sigpending指令
用于设置Linux 2.6.6版本之后Linux平台的事件信号队列长度上限。它主要影响事件驱动模型中rtsig模型可以保存的最大信号数。

(4)devpoll_changes和devpoll_events指令
用于设置在/dev/poll事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。前者设置传递给内核的事件数量,
后者设置从内核获取的事件数量。默认值为32

(5)kqueue_changes和kquue_events指令
用于设置在kqueue事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。前者设置传递给内核的事件数量,
后者设置从内核获取的事件数量。默认值为512.

(6)epoll_events指令
用于设置在epoll事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。默认值为512.
注意:与其他事件驱动模型不同,epoll模型下Nginx服务器向内核传递事件的数量和从内核获取的事件数量是相等的。所以,
不存在epoll_changes指令。

(7)rtsig_signo指令
用于设置rtsig模式使用的2个信号中的第一个,第二个信号是在第一个信号的编号上加1.默认的第一个信号设置为:
SIGRTMIN+10

(8)rtsig_overflow_*指令
该指令有3个具体的指令,rtsig_over_events、rtsig_over_test、rtsig_over_threshold指令。这些指令用来控制当rtsig模式中信号队列溢出时Nginx服务器的处理方式。
rtsig_over_events:指定队列溢出时使用poll库处理的事件数,默认值为16.
tsig_over_test:指定poll库处理完第几件事后将清空rtsig模型使用的信号队列,默认值为32.
tsig_over_threshold:指定rtsig模式使用的信号队列中的事件超过多少时就需要清空队列了。该指令只对Linux 2.4.x以下版本有效。

NGINX高性能Web服务器详解(读书笔记)的更多相关文章

  1. Nginx高性能web服务器详解书中概要

    一.Nginx功能 1.Nginx服务器以其功能丰富著称于世.它既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器;能够快速响应静态页面(HTML)的请求;支持FastCGI.SSL.V ...

  2. 《Nginx高性能Web服务器详解》

    第1章 Nginx初探 第2章 Nginx服务器的安装部署 第3章 Nginx服务器架构初探 第4章 Nginx服务器的高级设置 第5章 Nginx服务器的Gzip压缩 第6章 Nginx服务器的Re ...

  3. nginx中configure脚本支持的常用选项,拍摄自《Nginx高性能Web服务器详解》

  4. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  5. nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  6. nginx高性能WEB服务器系列之八--nginx日志分析与切割

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  7. nginx高性能WEB服务器系列之七--nginx反向代理

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  8. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  9. nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

随机推荐

  1. Lesson: The "Hello World!" Application

    Lesson: The "Hello World!" Application The sections listed below provide detailed instruct ...

  2. 使用HttpDownLoadHelper下载文件

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...

  3. 性能测试学习之三—— PV->TPS转换模型&TPS波动模型

    PV->TPS转换模型 由上一篇“性能测试学习之二 ——性能测试模型(PV计算模型)“ 得知 TPS = ( (80%*总PV)/(24*60*60*(T/24)))/服务器数量 转换需要注意: ...

  4. Spring MVC处理异常的4种方式

    http://blog.csdn.net/ufo2910628/article/details/40399539 http://my.oschina.net/CandyDesire/blog/3333 ...

  5. jScrollPane 美化滚动条

    在线实例 滚动条可见 滚动条隐藏 使用方法 <div class="container"> <h1>滚动条可见</h1> <div cla ...

  6. 过去几个月出炉的30款最喜欢的 jQuery 插件

    在这篇文章中,我们收集了一些在过去的几个月里最喜欢的 jQuery 插件.为了使您更容易搜索到自己喜欢的 jQuery 插件,我们已经对插件进行了分类: 页面布局插件,图片和视频插件,滑块和画廊,排版 ...

  7. CSS3 学习笔记

    border-radius 圆角是做网页永远绕不过的话题,以前基本是通过背景图片做的,有了 CSS3 以后通过属性就 能够搞定,我们可以通过 border-radius 设置元素的圆角半径. bord ...

  8. JQuery插件Validation的使用-遁地龙卷风

    第二版 (-1)写在前面 本文不是要详细说明Validation插件的使用,而是将满足开发需求的代码已最应该使用的方式写出来,并附有详细的注释 想要了解更多,去jquery的官网,有最新,最全面的,后 ...

  9. RT-Thread入门和模拟器的配置生成

    RT-Thread是一个国产开源的实时操作系统,支持MCU多,外设丰富.值得学习 下载地址:http://www.rt-thread.org/page/31.html ,解压可以得到一下目录结构:|- ...

  10. SharePoint 向多行文本类型字段插入特殊类型链接

    1.在测试列表中插入一个多行文本字段,名字叫做Content,如下图: 2.在Content字段里,添加一个Link,如下图: 3.尝试输入Notes格式的Link,如下图: 4.点击OK的时候,弹出 ...