一、系统优化
1.文件句柄优化–可打开的最大文件数量
# 1、查看文件句柄数设置
[root@lb01 ~]# ulimit -n
1024
# 2.查看打开的文件句柄数 (安装lsof软件)
[root@lb01 ~]# lsof | wc -l
3061
[root@web01 ~]# lsof | wc -l
5060
# 3.查看指定服务的打开文件句柄数
[root@web01 ~]# lsof -p 31491 | wc -l #31491 :查看同一个服务打开的所有文件数是多少。
# 4.设置文件句柄数 -- 系统全局的设置
[root@web01 ~]# vim /etc/security/limits.conf
* - nofile 65535
* soft nofile 65535
* hard nofile 65535
* #所有用户
- #当超过设置的文件句柄数时,什么都不干
soft #当超过设置的文件句柄数时,仅提示
hard #当超过设置的文件句柄数时,直接限制
# 5.设置文件句柄数 -- 用户局部局的设置
[root@web01 ~]# vim /etc/security/limits.conf
root - nofile 65535
root soft nofile 65535
root hard nofile 65535
# 6.针对某一个服务设置 文件巨柄
'以NGINX为例子,修改它的文件句柄,其他的服务通路,找到某项服务的主配置文件,
[root@lb01 ~]# vim /etc/nginx/nginx.conf
user www;
worker_processes 1;
worker_rlimit_nofile 65535; # 修改nignx的最大文件句柄为65535.
2、系统通用优化 (内核优化)
[root@lb01 ~]# vim /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1 #tw 就是time wait 开启time wait 使用
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_forward = 1 #开启IP转发,默认是开启的
[root@lb01 conf.d]# sysctl -p #生效
二、代理服务优化
# tcp长连接 -- (比较块,一次链接,多次请求)
# 不仅仅是用户访问服务器的,'负载均衡的keepalived',负载均衡连接web,web连接php,数据库,共享文件等,都是短链接,需要我们用到代理,优化为长链接。
1.配置用户访问负载均衡的长连接
[root@lb01 ~]# vim /etc/nginx/nginx.conf
... ...
http {
... ...
keepalive_timeout 65;
... ...
}
2.配置负载均衡代理到web的长连接
[root@lb01 ~]# vim /etc/nginx/conf.d/linux12.keep.com.conf
upstream tomcat {
server 172.16.1.7:8080;
keepalive 8; #配置开启长连接,16,32也是同样开启长连接
}
server {
listen 80;
server_name linux12.keep.com;
location / {
proxy_pass http://tomcat;
proxy_http_version 1.1; #代理带后端的http版本,1.0是短链接,1.1是长链接。
proxy_set_header Connection ""; #清除请求头字段
include proxy_params;
}
}
# 代理nginx也可以 把8080改成80就行
3.配置web代理到php保持长连接
[root@web01 ~]# vim /etc/nginx/conf.d/linux12.wp.com.conf
## 这是基于负载均衡,使用我代理我自己方式,开启长链接。
upstream php_server {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name linux12.wp.com;
location / {
root /mm/wordpress;
index index.php;
}
location ~* \.php$ {
fastcgi_pass php_server;
fastcgi_param SCRIPT_FILENAME /mm/wordpress/$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_keep_conn on; # 表示对于'php_server'开启长链接
include fastcgi_params;
}
}
4.代理优化配置
[root@lb01 ~]# vim /etc/nginx/proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 20s;
proxy_read_timeout 20s;
proxy_send_timeout 20s;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 8k;
proxy_next_upstream http_500 http_502 http_503 http_504;
三、静态资源优化
1.静态资源缓存
# 类型 后缀
图片文件 gif、png、jpg、jpeg
视频文件 mp4、avi、rmvb
其他文件 txt、xml、pdf
样式文件 css、js、html
2.静态资源缓存
### 此bash都是在浏览器的内容
#响应头部
cache-control: max-age=15552000
expires: Fri, 01 Jan 2905 00:00:00 GMT
last-modified: Mon, 28 Sep 2970 06:00:00 GMT
ETag: "5fd6c1d9-7cda"
#请求头部
If-None-Match: "5fs2c4d9-7cda"
If-Modified-Since: Sat, 13 Sep 2021 15:43:09 GMT
3、浏览器缓存
# 1、浏览器缓存原理
1.浏览器先去查看响应头部的 cache-control
2.如果没有超过缓存时间,直接返回浏览器缓存的内容
3.如果 cache-control 设置为 no-cache,浏览器会继续去读取 expires
4.如果没有到达 expires 设置的时间,那么浏览器会读取缓存
5.如果 cache-control 和 expires 都没有设置
6.浏览器会去查看服务器上面的 ETag
7.服务器上如果有 ETag,那么浏览器会拿着 If-None-Match 与其对比,如果值相同,那么走缓存
8.如果 ETag 与 If-None-Match 不同,浏览器会读取服务器上的 last-modified
9.服务器上如果有 last-modified,那么浏览器会拿着 If-Modified-Since 与其对比,如果值相同,那么走缓存
10.如果 last-modified 与 If-Modified-Since 不同,则不走缓存,需要重新到服务器上获取数据并返回
# 2、浏览器缓存参数含义
1.cache-control:'缓存控制,记录的是文件的保留时长
2.expires:'缓存到期时间
3.ETag:'服务器上保留的文件的唯一识别符
4.If-None-Match:'浏览器上上保留的文件的唯一识别符
5.last-modified:'服务器上保留的文件的最后修改时间
6.If-Modified-Since:'浏览器上保留的文件的最后修改时间