• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
2022
博客园    首页    新随笔    联系   管理    订阅  订阅

Nginx优化 - 02

一、系统优化

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:'浏览器上保留的文件的最后修改时间
posted @ 2021-04-10 22:07  博客之记  阅读(53)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3