目录
一、影响用户体验的因素
二、网络连接——Apache/Nginx服务请求过程
三、I/O模型——Input/Output模型
1.同步/异步
2.阻塞/非阻塞
3.同步异步/阻塞非阻塞组合
四、Nginx用法
一、影响用户体验的因素
- 客户端硬件配置
- 客户端网络速率
- 客户端与服务端距离
- 服务端网络速率
- 服务端硬件配置
- 服务端架构设计
- 服务端应用程序工作模式
- 服务端并发数量
- 服务端响应文件大小及数量
- 服务端I/O压力
二、网络连接——Apache/Nginx服务请求过程
- 客户端发起请求 先发送到网卡
- 网卡收到的报文复制到内核空间
- 内核空间再复制到用户空间的应用程序空间
- nginx 分析得到一个磁盘页面文件
- 再将需求反馈给内核空间,应为应用程序没有权限从磁盘上直接读取文件,需要依靠内核
- 内核去磁盘上找到所需要的文件,加载到内核空间
- 加载后再复制到用户空间
- 用户空间构建响应报文,交给内核空间,内核空间再复制给网卡,返回给用户
- 整个过程会来回切换 用户空间,内核空间 那么我们可以再次基础上做优化处理
三、I/O模型——Input/Output模型
1.同步/异步
A程序需要调用B程序的某一个功能,A发送一个请求需要B完成一个任务
- 同步:B不会主动去通知A是否完成需要A自己去问
- 异步:B会主动通知A是否完成
2.阻塞/非阻塞
A发送一个请求需要B完成一个任务
- 阻塞:B在完成A的任务前不能执行其他任务
- 非阻塞:B在完成A的任务前可以同步进行其他任务
3.同步异步/阻塞非阻塞组合
- 同步阻塞:烧水壶如果水没烧好前,我的人不能离开
- 同步非阻塞:烧水壶如果水没烧好前,我可以离开一会儿,需要时不时的回来看水有没有烧开
- 异步阻塞:烧水壶可以提醒我水烧开了,但是我还是要时不时回来看一下水有没有烧开
- 异步非阻塞:烧水壶可以提醒我水烧开了,我可以在烧水的同时,可以去做其他的事情
四、Nginx用法
- nginx -v——查看版本信息
- nginx -V——查看编译信息
- nginx -s——发送信号(kill -l查看信号)
- nginx -t——检查语法
- nginx -g——使用选项后的配置,不使用配置文件里的内容
- ps aux|grep nginx
- systemctl start/stop/status nginx
- nginx -g "user cxk"
- nginx -g ’daemon off;‘ 前台运行命令
源码包给主配置文件进行高亮:cp -r /opt/nginx-1.18.0/contrib/vim/* /usr/share/vim/vimfiles/
发送信号 nginx -s send signal to a master process: stop, quit, reopen, reload
内容 | 释义 |
---|---|
SIGINT,SIGTERM(stop) | Shut down quickly(直接停止) |
SIGHUP(reload) | Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.(重新加载配置文件) |
SIGHQUIT(quit) | Shut down gracefully(优雅的退出:有人在访问不会结束进程) |
SIGUSR1(reopen) | Reopen log files(重新分割日志) |
SIGUSR2 | Upgrade the nginx executable on the fly. (运行中升级) |
SIGWINCH | Shut down worker processes gracefully.(优雅的关闭worker进程,work进程负责处理请求,还有请求不会关闭) |
kill -USR1 `cat /apps/nginx/run/nginx.pid` 重新生成日志文件