nginx服务与调优

一、nginx概述:


1.Nginx简介:


  Nginx是一个高性能的HTTP和反向代理服务器。是一款轻量级的高性能的web服务器/反向代理服

务器/电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30 000~50 000个并发请求。

2.基础特性:


模块化设计,较好的扩展性

高可靠性

支持热部署:不停机更新配置文件,升级版本,更换日志文件

低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存

event-driven,aio,mmap,sendfile

2.Apache:

  Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

  3、Nginx和Apache最核心的区别:


nginx并发性比较好, CPU占用内存低,如果rewrite频繁,选用apache最佳。


Nginx处理静态文件好, 耗费内存少,只适合静态和反向。


apache是同步多进程模型,一个连接对应一个进程,nginx是异步的,多个连接可以对应一个进程。


Apache在处理动态有优势。
 

IO模型

I/O在计算机中指Input/Output, IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一

Linux 的 I/O

  • 磁盘I/O 磁盘I/O是进程向内核发起系统调用,请求磁盘上的某个资源比如是html 文件或者图片,然后内核通过相应的驱动程序将目标文件加载到内核的内存空间,加载完成之后把数据从内核内存再复制给进程内存,如果是比较大的数据也需要等待时间

  • 网络I/O : 一切皆文件,本质为对socket文件的读写 网络通信就是网络协议栈到用户空间进程的IO就是网络IO

I/O就是把数据从内核空间中的内存数据复制到用户空间中进程的内存当中

网络l/O过程

1.客户端发起请求 先发送到网卡   


2.网卡收到的报文复制到内核空


3.内核空间再复制到用户空间的应用程序空间


4.nginx 分析得到一个磁盘页面文件


5.再将需求反馈给内核空间,应为应用程序没有权限从磁盘上直接读取文件,需要依靠内核


6.内核去磁盘上找到所需要的文件,加载到内核空间


7.加载后再复制到用户空间


8.用户空间构建响应报文,交给内核空间,内核空间再复制给网卡,返回给用户


整个过程会来回切换 用户空间,内核空间  那么我们可以再次基础上做优化处理

I/O 模型相关概念

同步/异步(消息反馈机制):关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。

同步:synchronous,被调用者并不提供事件的处理结果相关的通知消息,需要调用者主动询问事情是否处理完成

异步:asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态

阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态

  • 阻塞:blocking,指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起,干不了别的事情。

  • 非阻塞:nonblocking,指IO操作被调用后立即返回给用户一个状态值,而无需等到IO操作彻底完成,在最终的调用结果返回之前,调用者不会被挂起,可以去做别的事情。

阻塞型 I/O 模型

  • 优点:程序简单,在阻塞等待数据期间进程/线程挂起,基本不会占用 CPU 资源

  • 缺点:每个连接需要独立的进程/线程单独处理,当并发请求量大时为了维护程序,内存、线程切换开销较大,apache 的preforck使用的是这种模式。

非阻塞型 I/O 模型

用户线程发起IO请求时立即返回。但并未读取到任何数据,用户线程需要不断地发起IO请求,直到数据到达后,才真正读取到数据,继续执行

多路复用 I/O

它的基本原理就是select/poll/epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程。当用户进程调用了select,那么整个进程会被block,而同时,kernel会“监视”所有select负责的socket,当任何一个socket中的数据准备好了,select就会返回。

信号驱动式 I/O 模型

信号驱动I/O的意思就是我们现在不用傻等着了,也不用去轮询。而是让内核在数据就绪时,发送信号通知我们

  • 优点:线程并没有在等待数据时被阻塞,内核直接返回调用接收信号,不影响进程继续处理其他请求因此可以提高资源的利用率

  • 缺点:信号 I/O 在大量 IO 操作时可能会因为信号队列溢出导致没法通知

异步 I/O 模型

异步I/O 与 信号驱动I/O最大区别在于,信号驱动是内核通知我们何时开始一个I/O操作,而异步I/O是由内核通知我们I/O操作何时完成。

这五种 I/O 模型中,越往后,阻塞越少,理论上效率也是最优前四种属于同步 I/O,因为其中真正的I/O 操作(recvfrom)将阻塞进程/线程,只有异步 I/O 模型才与 POSIX 定义的异步 I/O 相匹配

nginx支持的事件驱动模型

1、select:


select库是在linux和windows平台都基本支持的 事件驱动模型库,并且在接口的定义也基本相同,

只是部分参数的含义略有差异,最大并发限制1024,是最早期的事件驱动模型。


2、poll:


在Linux 的基本驱动模型,windows不支持此驱动模型,是select的升级版,取消了最大的并发限制,在编译nginx的时候可以使用--with-poll_module和--without-poll_module这两个指定是否编译select库。


3、epoll:


epoll是库是Nginx服务器支持的最高性能的事件驱动库之一,是公认的非常优秀的事件驱动模型,它和select和poll有很大的区别,epoll是poll的升级版,但是与poll有很大的区别.


epoll的处理方式是创建一个待处理的事件列表,然后把这个列表发给内核,返回的时候在去轮训检查这个表,以判断事件是否发生,epoll支持一个进程打开的最大事件描述符的上限是系统可以打开的文件的最大数,同时epoll库的I/O效率不随描述符数目增加而线性下降,因为它只会对内核上报的“活跃”的描述符进行
操作。

nginx 模块

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

  • Stream服务模块: 实现反向代理功能,包括TCP协议代理

  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

nginx高度模块化,但其模块早期不支持DSO机制;1.9.11 版本支持动态装载和卸载

信号使用

1.帮助

 2.显示版本

 3.显示编译详细情况 模块等信息

发送信号

看信号大全

可以使用man手册来查看详细的信号 如果没安装,去源码包里找到man文件
man   路径/nginx.8      不加路径打不开man帮助

stop          SIGTERM        直接停止
quit           SIGQUIT        优雅的退出:有人在访问不会结束进程
reopen       SIGUSR1        分割日志
reload       SIGHUP         重新加载配置文件

nginx信号:

nginx -s

  stop             SIGTERM        直接停止
  quit              SIGQUIT         优雅的退出:有人在访问不会结束进程
  reopen        SIGUSR1         分割日志
  reload         SIGHUP           重新加载配置文件


分割日志:

 平滑升级

1.关闭防火墙,启动nginx

2.开启两核

vim /apps/nginx/conf/nginx.conf

 3.下载编译新版本:

未完待续

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/108822.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

httpd协议与apache

1.http 相关概念 HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/…

Exploring Unreal Engine New Free Archviz Explorer Project 视频笔记

链接: https://www.bilibili.com/video/BV1Q34y1Z7he/ 场景中没有太阳,也没有定向光 该蓝图用来控制光线的显示 删除这个蓝图 添加这个蓝图 顶部会出现时间滑块 该项目还有扩展插件,用户可以自由下载 它是由一个8k的卫星图做的地形底图 …

js中?.、??、??=的用法及使用场景

上面这个错误,相信前端开发工程师应该经常遇到吧,要么是自己考虑不全造成的,要么是后端开发人员丢失数据或者传输错误数据类型造成的。因此对数据访问时的非空判断就变成了一件很繁琐且重要的事情,下面就介绍ES6一些新的语法来方便…

Kali 软件管理

kali 更新 1. 查看发行版本 ┌──(root㉿kali)-[~] └─# lsb_release -a No LSB modules are available. Distributor ID: Kali Description: Kali GNU/Linux Rolling Release: 2023.2 Codename: kali-rolling2. 查看内核版本 ┌──(root㉿kali)-[~] └─…

Linux常用命令——depmod命令

在线Linux命令查询工具 depmod 分析可载入模块的相依性 补充说明 depmod命令可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。 语法 depmod(选项)选项 -a或--all:分析所有可…

32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…

路径规划 | 图解Theta*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 A*算法的局限性2 Theta*算法原理图解3 Bresenham视线法4 算法仿真测试4.1 算法流程图4.2 ROS C 实现4.3 Python实现4.4 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全…

iTunes怎么备份?1招教你轻松搞定

相比于苹果手机的iCloud备份,使用iTunes备份具有以下优点:1、备份容量不受限制;2、备份后的文件就像普通文档一样,可以随时进行查看和管理。本文将为大家介绍itunes怎么备份、如何对备份进行加密以及怎么删除备份的方法&#xff0…

Redis全局命令

"那篝火在银河尽头~" Redis-cli命令启动 现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…

【Unity3D赛车游戏】【六】如何在Unity中为汽车添加发动机和手动挡变速?

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Vue2向Vue3过度核心技术编程式导航

目录 1 编程式导航-两种路由跳转方式1.问题2.方案3.语法4.path路径跳转语法5.代码演示 path跳转方式6.name命名路由跳转7.代码演示通过name命名路由跳转8.总结 2 编程式导航-path路径跳转传参1.问题2.两种传参方式3.传参4.path路径跳转传参(query传参)5.…

基于ssm+vue德云社票务系统源码和论文

基于ssmvue德云社票务系统源码和论文063 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 1.选题的依据和意义 互联网时代,随着生活节奏的加快和不断上升的压力,人们急需寻找到情绪的宣泄…

opencv 进阶20-随机森林示例

OpenCV中的随机森林是一种强大的机器学习算法,旨在解决分类和回归问题。随机森林使用多个决策树来进行预测,每个决策树都是由随机选择的样本和特征组成的。在分类问题中,随机森林通过投票来确定最终的类别;在回归问题中&#xff0…

aws PinPoint发附件demo

php 版aws PinPoint发附件demo Laravel8框架,安装了"aws/aws-sdk-php": "^3.257" 主要代码: public function sendRawMail(Request $request) {$file $request->file(attachment);/*echo count($file);dd($file);*/$filenam…

E8267D 是德科技矢量信号发生器

描述 最先进的微波信号发生器 安捷伦E8267D PSG矢量信号发生器是业界首款集成式微波矢量信号发生器,I/Q调制最高可达44 GHz,典型输出功率为23 dBm,最高可达20 GHz,对于10 GHz信号,10 kHz偏移时的相位噪声为-120 dBc/…

【持续更新中】QAGroup1

OVERVIEW Q&AGroup1一、语言基础1.C语言(1)含参数的宏与函数的不同点(2)sizeof与strlen的区别(3)大/小端(4)strcpy与memcpy的区别(5)extern与static的区别…

SIP网络对讲终端 双键求助终端 防水求助终端

SV-6005TP SIP网络对讲终端 双键求助终端 防水求助终端 SIP对讲终端SV-6005TP是一款采用了ARMDSP架构;配置了麦克风输入和扬声器输出,SV-6005TP带一路寻呼按键,可实现SIP对讲功能,作为SIP对讲的终端,主要用于银行、部…

macOS 安装 Homebrew 详细过程

文章目录 macOS 安装 Homebrew 详细过程Homebrew 简介Homebrew 安装过程设置环境变量安装 Homebrew安装完成后续设置(重要)设置环境变量homebrew 镜像源设置macOS 安装 Homebrew 详细过程 本文讲解了如何使用中科大源安装 Homebrew 的安装过程,文章里面的所有步骤都是必要的,需…

洁净区环境监测如何操作?

洁净区环境监测 如何操作 洁净区洁净等级划分为: A级:指高风险操作区,如:灌装、放置胶塞桶、敞口安瓿瓶、敞口西林瓶的区域及无菌装配或连接操作的区域。通常用层流操作台(罩)来维持该区的环境状态。 B级…

AI 绘画Stable Diffusion 研究(十五)SD Embedding详解

大家好,我是风雨无阻。 本期内容: Embedding是什么?Embedding有什么作用?Embedding如何下载安装?如何使用Embedding? 大家还记得 AI 绘画Stable Diffusion 研究(七) 一文读懂 Stab…