高并发下Nginx优化(一)

简介: 【4月更文挑战第15天】高并发下Nginx优化

高并发下Nginx整合方案
image.png

一、 高并发架构分析

什么是高并发?
• 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是
指,通过设计保证系统能够同时并行处理很多请求。
• 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查
询率QPS(Query Per Second),并发用户数等。
• 响应时间:系统对请求做出响应的时间
• 吞吐量:单位时间内处理的请求数量。
• QPS:每秒响应请求数
如何提升系统的并发能力?
• 互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale
Up)与水平扩展(Scale Out)。
• 垂直扩展:提升单机处理能力。垂直扩展的方式又有两种。
• 增强单机硬件性能
• 提升单机架构性能
在互联网业务发展非常迅猛的早期,如果预算不是问题,强烈建议使用“增强单机硬件性能”的
方式提升系统并发能力,因为这个阶段,公司的战略往往是发展业务抢时间,而“增强单机硬件性
能”往往是最快的方法。
不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限
的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。
水平扩展:只要增加服务器数量,就能线性扩充系统性能。

二、高并发下Nginx配置限流
三种方式实现:
• limit_conn_zone
• limit_req_zone
• ngx_http_upstream_module
前两种只能对客户端(即单一ip限流)
Ab工具:
• Centos安装:yum install httpd-tools –y
• 测试:ab -c 10 -n 1000 http://127.0.0.1/
image.png
• limit_conn_zone
http{
limit_conn_zone $binary_remote_addr zone=one:10m;
server
{
......
limit_conn one 10;
......
}
}
• 其中“limit_conn one 10”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效

• limit_req_zone
http{
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
server
{
......
limit_req zone=req_one burst=120;
......
}
}
• 其中“limit_req zone=req_one burst=120”既可以放在server层对整个server有效,也可以放在location中只对单独的location有

• rate=1r/s的意思是每个地址每秒只能请求一次,也就是说令牌桶burst=120一共有120块令牌,并且每秒钟只新增1块令牌,120块令
牌发完后,多出来的请求就会返回503

• ngx_http_upstream_module(推荐)
upstream xxxx{
• 该模块是提供了我们需要的后端限流功能的
• 该模块有一个参数:max_conns可以对服务端进行限流,可惜在商业版nginx中才能使用
• 在nginx1.11.5版本以后,官方已经将该参数从商业版中脱离出来了,也就是说只要我们将生产
上广泛使用的nginx1.9.12版本和1.10版本升级即可使用
server 127.0.0.1:8080 max_conns=10;
server 127.0.0.1:8081 max_conns=10;
}
三、Nginx安全配置
版本安全 http { server_tokens off; }
IP安全 白名单配置:只允许下面ip访问
location / {
allow 192.168.136.1;
deny all;
}
黑名单配置:禁止访问
location / {
deny 192.168.136.2;
allow all;
}

文件安全  location /logs {
            autoindex on;
            root /opt/nginx/;
        }

     location ^/logs~*\.(log|txt)$ {
        add_header Content-Type text/plain;
        root /opt/nginx/;
    }

连接安全 开启 HTTPS

四、Nginx配置进程数、并发数、系统优化
调整Nginx的主配置文件,增加并发量
worker_processes 2; #调整到与CPU数量一致
events {
worker_connection 65535; #每个worker最大并发连接数
}
l 调整内核参数
[root@proxy ~]# ulimit -a #查看所有的属性值
[root@proxy ~]# ulimit -Hn 100000 #临时设置硬限制
[root@proxy ~]# ulimit -Sn 100000 #设置软限制
[root@proxy ~]# vim /etc/security/limits.conf
...

  • soft nofile 100000
  • hard nofile 100000
    用户/组 软/硬限制 需要限制的项目 限制的值
    l 验证
    [root@proxy ~]# ab -n 2000 -c 2000 http://192.168.136.131/ #自己访问自己,测试一下配置效果
目录
相关文章
|
存储 监控 固态存储
在高并发环境下,如何优化 WAL 的写入性能?
在高并发环境下,如何优化 WAL 的写入性能?
|
7月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
8月前
|
运维 监控 Kubernetes
高并发来了,运维别慌:如何优化运维流程,才能稳住阵脚?
高并发来了,运维别慌:如何优化运维流程,才能稳住阵脚?
250 4
|
7月前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
10月前
|
缓存 监控 Cloud Native
Java Solon v3.2.0 高并发与低内存实战指南之解决方案优化
本文深入解析了Java Solon v3.2.0框架的实战应用,聚焦高并发与低内存消耗场景。通过响应式编程、云原生支持、内存优化等特性,结合API网关、数据库操作及分布式缓存实例,展示其在秒杀系统中的性能优势。文章还提供了Docker部署、监控方案及实际效果数据,助力开发者构建高效稳定的应用系统。代码示例详尽,适合希望提升系统性能的Java开发者参考。
514 4
Java Solon v3.2.0 高并发与低内存实战指南之解决方案优化
|
10月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
2826 7
|
存储 监控 固态存储
在高并发环境下,如何优化 WAL 的写入性能?
在高并发环境下,如何优化 WAL 的写入性能?
295 2
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
902 3
|
缓存 前端开发 JavaScript
nginx的优化
nginx的优化
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
320 2
下一篇
开通oss服务