nginx复习008 配置优化

—–nginx配置优化

–什么是配置优化
软件的配置优化,是指在 硬件资源 允许的前提下,将硬件资源集中到特定的工作中

其本质是 减少 为其他工作保留的 余力,
来换取在 指定工作 上的 性能提升.

–nginx默认设置是为了平衡各种工作场景而准备的通用方案,
在特定工作中并不能发挥最后的性能.

举例:
手机的存储空间有限,如何分配?
一般用户:各种类型的资料,所占空间均衡
用户喜欢玩游戏:将大部分空间用来安装游戏
用户喜欢看电影:将大部分空间用来下载电影
用户喜欢听音乐:将大部分空间用来下载音乐
用户喜欢摄影:将大部分空间用来拍照和录制视频

–对于大型网站,往往需要大量的服务器协同工作
特点:各类服务器分工明确,职责单一
如:
负载均衡服务器:支持大量客户端并发连接
存储服务器:支持海量数据存储
数据库服务器:安全,稳定
缓存服务器:极高的存取速度

–连接数优化

1> 如何测试服务器的并发能力
当nginx作为负载均衡服务器时,能够接收的并发连接应该越多越好
那么如何测试一台服务器所能承受的并发连接能力?
可以使用web服务器的压力测试工具
常见的工具有:http_load, webbench, ApacheBench, Siege

这里以ApacheBench为例:
该工具可以在一台计算机中向一个url地址发送大量的并发请求,
然后检测服务器响应这些请求花费了多少时间,有多少请求处理失败.

利用ApacheBench可以模拟一台服务器被大量客户端并发连接的情况,
以测试服务器的并发能力

2> 使用ApacheBench工具
在客户端中切换到Apache安装目录的bin目录,
该目录下的ab程序就是ApacheBench工具
cd /usr/local/apache2/bin

ab命令的选项”-n”表示发送的请求总数,”-c”表示并发数:
./ab -n10 -c2 http://192.168.152.133
后面的网址是请求的服务器url地址
备注:apache目前只能使用http1.0协议进行请求

3> 查看ApacheBench测试报告

–查看linux文件打开限制
ulimit -a | grep open
–修改linux文件打开限制
ulimit -n 临时
修改/etc/profile 永久

4> 优化nginx连接数

worker_processes  auto;
worker_rlimit_nofile 65535;
events {
    worker_connections 65535;
    multi_accept on;
}

worker_processes 指令用于指定工作进程的个数,设置为auto是nginx会根据cpu的核心数来控制
worker_rlimit_nofile 用于设置最多打开的文件数量
worker_connections 用于设置每个工作进程可接收的连接数
multi_accept 表示是否允许一个工作进程响应多个请求
备注:在nginx配置文件中调整最大连接数后即可生效
无需更改系统的ulimit配置的数值

–nginx支持select, poll, kqueue, epoll等多种类型的连接处理方式
在默认情况下回自动选择最合适系统的方式

将错误基本设置为info时,就可以查看当前nginx使用的连接处理方式

epoll是linux平台上性能非常高的一种多路I/O复用模型
在系统内核和glibc(c运行库)支持的情况下,nginx会自动使用epoll方式

–手动设置

events {
    use epoll;
}

—–客户端请求限制
1> 什么情况下需要限制客户端的请求
在完成nginx连接数优化后,有一个问题值得注意:

在真实上线环境中,如果服务器遇到同一ip地址发送了2000个并发请求,
很有可能是遇到了网络攻击,
如果没有任何防御措施,会消耗服务器大量的资源.

企业一般会通过部署专业的防火墙设备来阻挡攻击,
而nginx本身也具有这样的功能,利用nginx可以对客户端的请求进行限制

2> 限制同一个ip的并发数

http {
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn perip 10;

}

limit_conn_zone指令:
用于开辟一个共享内存空间保存客户端ip,空间名称为perip,空间大小为10M
limit_conn指令:用于限制连接数量
$binary_remote_addr 保存了用二进制表示的当前客户端ip地址
以上配置表示nginx对于同一个ip地址只允许10个并发连接,
当超过时返回503(服务器暂时不可用)错误
–limit_conn指令也可用在server和location块中,实现不同级别的控制.

3> 限制虚拟主机的并发数

http {
    limit_conn_zone $server_name zone=perserver:10m;
    server{
        listen 80;
        server_name localhost;
        limit_conn perserver 20;
    }
}

4> 限制响应的传输速率
涉及的指令 limit_rate
context: http server location “if in location”

http {
    limit_rate 100k;
    limit_rate_after 10m;
}

limit_rate指令:
用于现在每个连接的传输速率
limit_rate_after指令:
用于在已经传输了指定大小的数据后再进行限速.
从而实现只针对大文件限制下载速度.

–创建一百兆的测试文件

dd if=/dev/zero of=100mb.test bs=1M count=100

dd用于按照指定大小的块复制文件 if表示输入文件 of表示输出文件
bs表示每个块的大小,count表示块的数量
输入文件/dev/zero是一个可以无限读取出空字符(即ASCII的0)的虚拟文件
读取后会保存到当前目录下的100mb.test文件中

–测试
wget http://192.168.152.133/100mb.test
由于wget显示的下载速度是平均值,所以会看到速度减慢的过程,但实际并不是匀速下降的.

—–浏览器缓存优化

1> http协议中的缓存机制
服务器可以通过http响应消息控制浏览器缓存
和缓存相关的响应头有:Expires Cache-Control ETag Last-Modified等.
Last-Mondified和ETag由nginx自动生成

Last-Modified: 表示最后修改的时间
ETag: 用于浏览器判断内容有无改变
Cache-Control: 比较复杂,通常根据时间需要进行控制
Expires: 表示改资源的过期时间,如果没有过期则浏览器不会发起http请求

–在优化浏览器缓存时,通常会对静态资源进行优化

–配置静态资源过期时间

server {
    location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }
    location ~ \.(css|js)$ {
        expires      12h;
    }
}

–浏览器也会自动缓存静态文件,基于常见的静态资源扩展名自动缓存.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值