nginx 的配置, expire: 浏览器缓存
利用 CDN 进行内容分发
服务器集群 + 负载均衡 来支持请求量
- 根据服务的类型合理分配服务器类型
IO 密集, 计算密集, 进程比较多
ab 压力测试;
-
ubuntu install [
sudo apt install apache2-utils
]
- ab -c 1000 -n 50000 https://hxedu.top/index.html
- -c 并发数
- -n 请求次数
- -k 使用 keep-alive, 连接保持
硬件够, 高并发文件打开数,
安装统计模块便于观察 nginx 状态
-
重新编译 nginx; 添加模块 --add-module=~/download/ngx_http_consistent_hash-master --with-http_stub_stauts_module 之后要开启这个模块, 并配置
location /status { stub_status on; access_log off; <!-- 允许那个 ip, 其他的全部阻止 --> allow "ip"; deny all }
Nginx 单机 1W 的优化
-
建立 socket 连接
-
打开文件, 并延 socket 放回
-
排除问题:
-
从系统的 dmesg 和 nginx 的 error.log 错误日志排查
- dmesg 查询系统信息
-
从 socket 上来优化
-
最大连接数, somaxconn => /proc/sys/net/core/somaxconn, 这个是系统允许的值, 将这个值调大, 10000
-
加快 tcp 连接的回收 ipv4_tw_recycle => 1
-
空的 tcp 是否允许回收利用 ipv4_tw_reuse => 1
-
ipv4_tw_recycle
和ipv4_tw_reuse
开启快速回收tcp
连接 和 tcp 连接重新利用, 在 Linux 服务器上可以会造成大量的 tcp 连接失败, 不建议开启
-
-
不抵御洪水 /proc/sys/net/ipv4/tcp_syncookies => 0
不建议开启 2, 3, 4 项, 会出现 tcp 连接的异常失败
-
-
从文件上面来优化
-
worker_connections [N] 一个子进程最大的连接数
在高并发的网站上使用 keepAlive_timeout 设置; 如果时间过大, 可能会造成过多的 tcp time_wait
网友评论