NGINX高性能Web服务器详解(读书笔记)
原文地址: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服务器详解(读书笔记)的更多相关文章
- Nginx高性能web服务器详解书中概要
一.Nginx功能 1.Nginx服务器以其功能丰富著称于世.它既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器;能够快速响应静态页面(HTML)的请求;支持FastCGI.SSL.V ...
- 《Nginx高性能Web服务器详解》
第1章 Nginx初探 第2章 Nginx服务器的安装部署 第3章 Nginx服务器架构初探 第4章 Nginx服务器的高级设置 第5章 Nginx服务器的Gzip压缩 第6章 Nginx服务器的Re ...
- nginx中configure脚本支持的常用选项,拍摄自《Nginx高性能Web服务器详解》
- nginx高性能WEB服务器系列之四配置文件详解
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之八--nginx日志分析与切割
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之七--nginx反向代理
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
随机推荐
- 第 15 章 CSS 文本样式[下]
学习要点: 1.文本总汇 2.文本样式 3.文本控制 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 文本样式,通过文本样式的设置,更改字体的大小.样式以及文本的方位. 一.文本总汇 本节课, ...
- 使用Spring的@Scheduled实现定时任务
Spring配置文件xmlns加入xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation ...
- Android Library Project 使用问题总结
1. 当新建Android Library Project 工程或将已有工程转化为Android Library Project, 如果工程源代码中有如下语句: int id = view.getId ...
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
jquery取radio单选按钮的值 $("input[name='items']:checked").val(); 另:判断radio是否选中并取得选中的值 如下所示: fun ...
- TestNG官方文档中文版(4)-运行TestNG
4 - 运行TestNG TestNG可以以不同的方式调用: * Command line * ant * Eclipse * IntelliJ's IDEA 1) 命令行 假 ...
- Java的自动递增和递减
和C 类似,Java 提供了丰富的快捷运算方式.这些快捷运算可使代码更清爽,更易录入,也更易读者辨读.两种很不错的快捷运算方式是递增和递减运算符(常称作"自动递增"和"自 ...
- Training - Problem and Change Management
Problem Management Problem management seeks to identify the underlying causes of incidents in an IT ...
- Vue.js – 基于 MVVM 实现交互式的 Web 界面
Vue.js 是用于构建交互式的 Web 界面的库.它提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单.灵活的 API.从技术上讲, Vue.js 集中在 MVVM 模式上的视图模型层,并 ...
- 一款实用的viewer.js 图片相册
Viewer.js 是一款强大的图片相册插件,像SNS交友网站一般都会用到点击缩略图,弹出层大图片,而且弹出层有多个控制按钮,比如放大缩小.旋转.撤回等,底部有缩略图列表可切换. 支持移动设备触摸事件 ...
- ABAP--在查询条件只包含部分索引字段时,如何使用索引
One of the most important considerations when writing a select statement against a large table is th ...