查看哪个进程在哪个cpu里?
top里面按f 选中这个(上下方向键移动 空格选中 按q退出 ) 前端有*代表被选中 出错就敲回车
故top里面就有cpu信息了
用户反映访问不了www.song.com这个网站,你如何排查?(客户的问题 我们的问题)
- 首先让用户先访问其他网页 证实是否是用户网络问题
- 服务器是否还是开机?还是运行的?
- 服务器的网络是否正常
- 检查nginx是否运行
ps aux
- 检查端口号是否开发?==》查看防火墙
netstat
lsof
ss
查看服务器的防火墙是否关闭?
Iptables -L
Service firewalld status
- 看nginx日志文件
access.log
error.log
配置文件的继续讲解:
mime.types :大家都约定俗成的媒体类型,是一种标准,用来表示文档文件或字节流的性质或格式,nginx服务器和浏览器之间的规范
MIME文件里面内容实例如下:
MIME是规范 而Content-type是nginx响应报文里的一个字段:字段内容来自MIME.type文件里的规范
404:网页不存在
这一行声明错误页面 当网页不存在的时候会跳转到我们指定的error_page界面
这个404.html需要放在相关网站的根目录下 且这行代码也许放入相应server块里面
nginx常见的状态码:
404 :not found 网页不存在
我的nginx目录所在地
当有多个虚拟主机时:
直接访问ip时,会访问配置文件最上面的虚拟主机,所以最好使用域名
404界面代码 表示停留5秒跳转百度
http://www.song.com/feng --就是一个URL 统一资源定位符
后面这个feng就是一个文件夹 建在song目录下
50x的状态码都属于nginx的内部错误
例如:nginx的内部的限制,nginx链接数达到极限了,不能允许其他的人再连接进来了
这个50x网页回到html文件里面去找
放在http里
指定了访问的次数的政策一秒钟允许访问1次,统计的依据是客户机的ip地址
在内存当中开辟一段10m的空间(名字为perip) 专门来记录远程计算机(记录的地址)一秒钟来几次 如果超过1s一次则代表来访频繁
请求:客户机访问nginx服务器
请求数:单位时间(1s)内客户机访问服务器的次数 (反爬虫)
放在server里面
burst代表峰值 最空闲的时候最多也只有5个通行证
nodelay 不延迟
匹配以php结尾的URL
我们现在都是http 被认为不安全 明文传输
而https认为安全 密文传输
只要有一个worker在(即使master没了) 照样可以访问www.huang.com
Nginx的master和worker的关系?
负载均衡:将流量引向各个窗口
而master作用不是负载均衡 是用来监控worker的
Master管理worker进程,当worker进程死掉会重启一个,master是worker的父进程(用户直接连接worker)
IO多路复用(解决高并发问题的)
socket:接口 网络socket就是ip+port(比如:192.168.245.133:80)
单路:一个socket就是一个端口就是一路(效率低 开销大)
多路复用:所有都访问一个端口 就只用一路
多路是指网络连接 复用是指同一个线程
一个进程里面至少一个线程
IO多路复用的几个模型(算法)(这几个算法都是内核实现的):(如何直到哪些连接有新的请求 资源读写问题)
select:一个一个去检查有没有更新 但是时间长 随着数量增加 工作量增大
poll:和select差不多
epoll(默认):病人按铃触发事件 护士看灯得到消息
lsof -p master进程号:追踪nginx进程打开了什么文件
lsof -p worker进程号|grep poll:
epoll在worker进程里面 而没有在master里面
nginx的worker怎么从内核拿到数据?