NGINX高性能Web服务器详解(读书笔记)
来源:互联网 发布:网站搜索排名优化 编辑:程序博客网 时间:2024/06/05 18:49
第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以下版本有效。
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以下版本有效。
0
上一篇:Redhat下puppet集中配置管理
下一篇:SSH原理与运用:远程登录、远程操作与端口转发
相关热门文章
- 双机热备Oracle数据库服务器操...
- 双机热备Oracle数据库服务器操...
- 双机热备Oracle数据库服务器操...
- 虚拟磁带库的新生
- 虚拟磁带库的新生(1)
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- NGINX高性能Web服务器详解(读书笔记)
- nginx高性能web服务器详解(1)--安装nginx
- 高性能web服务器-读书笔记
- 高性能Web服务器 Nginx
- 高性能Web服务器 Nginx
- 高性能Web服务器 Nginx
- 高性能WEB服务器Nginx
- 高性能Web服务器 Nginx
- 高性能Web服务器 Nginx
- 高性能web服务器nginx
- 《Nginx高性能Web服务器详解》阅读笔记1
- Nginx,高性能的Web服务器
- Nginx + PHP 搭建高性能web服务器
- Nginx高性能WEB服务器系列
- nginx中configure脚本支持的常用选项,拍摄自《Nginx高性能Web服务器详解》
- Web高性能读书笔记
- Linux+Nginx+Php架设高性能WEB服务器
- Linux+Nginx+Php架设高性能WEB服务器(总结)
- 关于Redis数据过期策略
- LeetcodeUnique Paths
- ArcGIS Engine实现图层间空间选择的优化策略
- FBX SDK
- Eclipse写代码快捷(更新ing)
- NGINX高性能Web服务器详解(读书笔记)
- Android RecyclerView与泛型 简单实现多布局
- Arena777 Live Casino Unlimited Rebate 0.5%(arena777, arena777 casino malaysia, live casino, Rebate B
- APP测试学习之造轮子--基于MINA框架的NIO2
- android 源码编译详解【一】:服务器硬件配置及机型推荐-2016/06
- 使用Java注解来简化你的代码
- 有趣的机器学习:最简明入门指南
- 常用命令速查备忘
- Mac系统终端命令行不执行命令 总出现command not found解决方法
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
美甲雕花
雕花隔断
雕花图片
雕花板图案
雕花的马鞍歌词
雕花的马鞍原唱
中式雕花图案
雕虫小技什么意思
雕虫末技
雕虫小巧
雕虫小技的意思
朽木难雕 残寐
不假雕饰
雕饰
天然去雕饰的前一句
天然去雕饰上一句
清水出芙蓉天然去雕饰的意思
清水出芙蓉,天然去雕饰
黑雕鱼
雕鱼图片
黑雕鱼多少钱一斤
岎
雦
雨,
的雨
雨了
雨 诗
雨的
雨刷式过马路走红
张筱l雨全集图片147
雨刷过马路走红
雨的诗
写雨的散文
在雨中
雨后的
雨图
雨歌
雨的诗句
什么雨
雨的词语有哪些
雨 图片