影响性能指标
影响性能方便整体关注
1.网络
网络的流量,网络是否丢包,这些会影响http的请求调用
trace | 路由跟踪:例如trace www.baidu.com,就会返回去往百度的全部网管 |
2.系统
硬件有没有磁盘损坏,磁盘速率
系统负载,内存,系统稳定性
3.服务
连接优化,请求优化,根据业务形态做对应的服务设置
4.程序
接口性能,处理速度,程序执行效率
5.数据库
每个架构服务器之间都或多或少有一些关联,我们需要将整个架构进行分层,找到对应系统或服务的短板,然后进行优化
6.系统性能优化
文件句柄,linux一切皆文件,文件句柄可以理解为就是一个索引
文件句柄会随着我们进程的调用频繁增加
系统默认对文件句柄有限制,不能让一个进程无限使用
需要限制每个进程和每个服务器使用多大的文件句柄
文件句柄是必须要调整的优化参数
设置方式:
系统全局性修改
用户局部性修改
开启系统最大文件数:
vim /etc/security/limits.conf
root soft nofile 65535##软限制
root soft nofile 65535##硬限制
Nginx性能优化
1.nginx运行工作进程数量
worker_processes 4; 一般设置为cpu的合数或者2倍
2.Nginx运行和CPU亲和力
worker_processes auto;
worker_cpu_affinity 65535;
3.Nginx最大打开文件数
worker_rlimit_nofile 65535;
4.Nginx事件处理模型
use epoll;
5.开启高效传输模式
sendfile on
tcp_nopush no #防止网络阻塞
6.开启gzip
7.开启expires缓存
8.开启防盗链
什么是cgi,fastcgi,php-fpm?
CGI:就是web服务与php支架的桥梁,CGI就是规定要传哪些数据,以什么样的格式传递给后方处理这个请求的协议。
FastCgi:Fastcgi是用来提高CGI程序性能的,会先启动一个master,解析配置文件,初始化执行环境,然后再启动多个worker.
PHP-FPM:php-fpm是fastcgi管理器。
SERVER优先级:
servername一样的时候,访问的优先级从上而下
实验验证:
server {
listen 80;
server_name textserver2 192.168.100.203;
location / {
root /soft/code2;
index index.html index.htm;
}
}
server {
listen 80;
server_name textserver1 192.168.100.203;
location / {
root /soft/code1;
index index.html index.htm;
}
}
server {
listen 80;
server_name textserver3 192.168.100.203;
location / {
root /soft/code3;
index index.html index.htm;
}
}
先写三个server,然后创建目录
make /soft/done{1..3} -p
for i in {1..3}; do echo "<h1>Code $i</h1>" > /soft/code"$i"/index.html;done
可能会报出:nginx: [warn] conflicting server name "192.168.100.203" on 0.0.0.0:80, ignored
无伤大雅,只是一个警告
然后就可以进行访问验证了!!,可以将server2和3一次放在在上面进行验证
location的优先级:
完整匹配 | 优先级最高 |
= | 进行普通字符精确匹配,完全匹配 |
^~ | 表示给普通字符匹配,使用前缀匹配 |
~* | 不区分大小写匹配 |
正则匹配 | 匹配后会继续查找更精确location |
~ | 区分大小写 |
(2)nginx.conf文档编写
location = /code1/ {
rewrite ^(.*)$ /code1/index.html break;
}
location ~ /code* {
rewrite ^(.*)$ /code2/index.html break;
}
location ^~ /code {
rewrite ^(.*)$ /code3/index.html break;
}
}
得出优先级从大到小为:
=·······正则匹配·······^~·······(~与~*)同级,谁在上面谁生效
try_files的使用:
ngixn的try_files按照顺序检查文件是否存在
server {
listen 80;
server_name localhost;
root /soft/code/;
location / {
try_files $uri @java_page; ##访问时给$uri进行赋值,例如:http://192.168.100.100/index.html 则url为index.html
##当try_files访问不到$uri时,就跳到下@java_page规则进行查找
}
location @java_page {
proxy_pass http://192.168.100.203:8080;
}
}
ROOT和alias用户的区别:
root也可以被alias用户代替,这两个用户都可以使用相对路径,但是alias用户不添加/的话,就会被认为此文件不是目录,无法找寻index.html文件(相当于ROOT用户使将url路径和自己指定路径拼接一个最终路径使用)(alias是不会拼接url路径)
常见的状态请求码:
200;正常请求
301;永久请求
203;临时请求
400;请求参数错误
401;账户或密码错误(authorization required)
403;权限被拒绝(forbidden)
404;文件没找到(NOT Found)
413;用户上传文件呢限制大小(Requset Entity Too Large)
502;后端服务无响应(bad gateway)
504;后端执行服务超时
网站相关术语:
如果一栋大厦所有工作人员通过1个IP公网接口上网,总共100个设备,当所有人同时请求一个网站,并且刷新了5次,那么请求PV,IP,UV
PV:页面浏览量 500
UV:唯一设备 100
IP:唯一出口 1
网站访问原理:
1.DNS流程
(1)查询本地的hosts
(2)请求本地localDNS
(3)返回对应的IP
2.HTTP连接
(1)建立TCP三次握手,发送请求内容,请求头,请求的行,请求的主体
(2)将请求传递给负载均衡,负载均衡做对应的调度
(3)如果请求的是静态页面,马默调度至对应的静态群集群即可
(4)如果请求的是动态页面,将请求调度至动态群集