深入理解nginx
来源:互联网 发布:学软件去哪里 编辑:程序博客网 时间:2024/06/15 03:32
深入理解nginx
预备软件
1. 查看内核版本
因为2.6以上的内核才支持epoll,nginx的高并发的特性依赖epoll
uname -a
“Linux com.guang 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux”
2. 安装gcc
因为nginx是C写的
yum list gcc
“gcc.x86_64 4.8.5-11.el7 @base”
gcc -v
“gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) “
3. 安装gcc-c++
使用C++来编写Nginx HTTP模块
yum list gcc
“gcc-c++.x86_64 4.8.5-11.el7 @base”
4. 安装pcre
pcre,perl 兼容的正则表达式,如果想要在编写的模块中使用正则,那么需要安装此软件.反之亦然(不用则不装)
yum install -y pcre pcre-devel
太麻烦了,一次说完吧
yum list gcc
yum list gcc
yum install -y zlib zlib-devel
yum install -y openSSL openSSL-devel
zlib的作用: zlib库用于对HTTP包的内容做gzip格式的压缩, 如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type) 的HTTP响应使用gzip来进行压缩以减少网络传输量, 那么, 在编译时就必须把zlib编译进NginxopenSSL的作用: 如果我们的服务器不只是要支持HTTP, 还需要在更安全的SSL协议上传输HTTP, 那么就需要拥有OpenSSL了。 另外, 如果我们想使用MD5、 SHA1等散列函数, 那么也需要安装它
目录的制定
Nginx源代码存放目录
Nginx编译阶段产生的中间文件存放目录
部署目录
日志文件存放目录
/application/nginx/source/application/nginx/make/application/nginx/deploy/application/nginx/log
内核参数的优化
只针对最通用的、 使Nginx支持更多并发请求的TCP网络参数
修改/etc/sysctl.conffs.file-max = 999999net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_keepalive_time = 600net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.ip_local_port_range = 1024 61000net.ipv4.tcp_rmem = 4096 32768 262142net.ipv4.tcp_wmem = 4096 32768 262142net.core.netdev_max_backlog = 8096net.core.rmem_default = 262144net.core.wmem_default = 262144net.core.rmem_max = 2097152net.core.wmem_max = 2097152net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn.backlog=1024sysctl-p
这几个参数其实很常见耶难怪我觉得眼熟,原来就是描述http的一些参数file-max: 这个参数表示进程(比如一个worker进程) 可以同时打开的最大句柄数, 这个参数直接限制最大并发连接数, 需根据实际情况配置。tcp_tw_reuse: 这个参数设置为1, 表示允许将TIME-WAIT状态的socket重新用于新的TCP连接, 这对于服务器来说很有意义, 因为服务器上总会有大量TIME-WAIT状态的连接。tcp_keepalive_time: 这个参数表示当keepalive启用时, TCP发送keepalive消息的频度。默认是2小时, 若将其设置得小一些, 可以更快地清理无效的连接。tcp_fin_timeout: 这个参数表示当服务器主动关闭连接时, socket保持在FIN-WAIT-2状态的最大时间。tcp_max_tw_buckets: 这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字, TIME_WAIT套接字将立刻被清除并打印警告信息。 该参数默认为180000, 过多的TIME_WAIT套接字会使Web服务器变慢。tcp_max_syn_backlog: 这个参数表示TCP三次握手建立阶段接收SYN请求队列的最大长度, 默认为1024, 将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求ip_local_port_range: 这个参数定义了在UDP和TCP连接中本地(不包括连接的远端)端口的取值范围。net.ipv4.tcp_rmem: 这个参数定义了TCP接收缓存(用于TCP接收滑动窗口) 的最小值、 默认值、 最大值。net.ipv4.tcp_wmem: 这个参数定义了TCP发送缓存(用于TCP发送滑动窗口) 的最小值、 默认值、 最大值。netdev_max_backlog: 当网卡接收数据包的速度大于内核处理的速度时, 会有一个队列保存这些数据包。 这个参数表示该队列的最大值。rmem_default: 这个参数表示内核套接字接收缓存区默认的大小。wmem_default: 这个参数表示内核套接字发送缓存区默认的大小。rmem_max: 这个参数表示内核套接字接收缓存区的最大大小。wmem_max: 这个参数表示内核套接字发送缓存区的最大大
- 深入理解Nginx 读书笔记
- 深入理解nginx
- 深入理解nginx中的错误
- 《深入理解Nginx》之HTTP模块
- Nginx核心配置深入理解及优化
- Nginx核心配置深入理解及优化
- 《深入理解Nginx》读书笔记1:架构设计
- 深入理解Nginx-第2章 - Nginx的配置 - 一
- 深入理解Nginx-第2章 - Nginx的配置 - 二
- 深入理解Nginx:模块开发与架构解析
- 《深入理解Nginx模块开发与架构解析》勘误
- 《深入理解nginx》笔记之 ngx_upstream相关结构
- 《深入理解Nginx》笔记之ngx_event_pipe_s结构体
- 《深入理解Nginx》笔记之 ngx_mail相关结构体
- 深入理解PHP之:Nginx 与 FPM 的工作机制
- 一深入理解Nginx的 模块化 ,全局观
- 三:深入理解Nginx的模块化 (结合源码详解)
- 深入理解nginx chap3 开发一个简单的HTTP模块
- C++11新特性学习笔记—继承构造函数的使用
- 解决Spring整合SpringMVC时,Bean被实例化两次的问题
- 在启动MYSQL时出现问题:“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”
- 一些响应的零碎笔记
- 字符串常量池
- 深入理解nginx
- POJ 1201 Intervals
- Android ConstraintLayout的基本使用
- VS2010 数据库操作(基于Access 2013)
- CUDA并行编程学习心得1
- 刘明春总结《2017年11月3号》【连续第7天总结】
- Caffe命令行解析及log日志文件生成
- 五、内存管理系统:makefile、整页分配
- TCP /IP部分知识点