开发者社区> oneapm_official> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

简介: 本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能。本文系国内 ITOM 管理平台 OneAPM 编译呈现。
+关注继续查看

【编者按】本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能。本文系国内 ITOM 管理平台 OneAPM 编译呈现。

本文上一篇系: 利用 NGINX 最大化 Python 性能,第一部分:Web 服务和缓存

Python 以其高性能脚本语言而著称,而 NGINX 则能够通过增加代码的实际执行速度来提供助力。对于单一服务器来说,如果网页的一半由静态文件组成(很多网页都有一半由静态文件组成),增加静态文件缓存可使这类网页性能翻倍,缓存动态应用程序内容能够进一步提升应用程序性能。

但这种方法并不是对所有应用都受用,或者说提升的性能不足够。这时就要考虑横向扩展了---迁移到多服务器应用。多服务器应用不仅功能强大、使用灵活、几乎能够无限扩展,而且成本较低。让我们继续前面的优化 Python 性能。

技巧 6---将 NGINX 作为反向代理服务器

从单服务器环境来讲,部署反向代理服务器似乎是个很大的进步,因为这一部署非常简单,实现的功能却相当强大。添加反向代理服务器后,不仅性能立即得到大幅提升,还有机会实现:

  • 增强性能 --- 在现有的 Python 应用程序前放置一个 NGINX 服务器。无需更改 Web 服务器软件或配置。现有的 Web 服务器和应用程序服务器相结合并在一个冒泡中运行,无法直接接触网络流量,由反向代理服务器提出填鸭式请求。
  • 优化性能 --- 按照我们上一篇介绍 Python 的文章,针对应用程序生成的文件实施静态文件缓存微应用缓存。但现在,我们要在新的反向代理服务器而不是应用程序服务器上实施。运行应用程序的服务器明显减轻了工作负载,这样就扩充了应用程序的容量,让所有用户都能感受到更高性能。
  • 横向扩展 — 增加更多应用程序服务器并对其实施负载均衡,利用持续会话实现每位用户的连贯体验。
  • 赋予高可用性 — 让你的反向代理服务器镜像到在线备份,同时拥有备用的应用程序服务器,让你的站点高度可用。
  • 监控与管理 — NGINX Plus 提供了高级监测与管理功能,同时配备主动体检 —— 如果设定了主动体检,反向代理服务器会主动向各个服务器发出带外请求,核实各个服务器的可用性。

利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

技巧 7---重写 URL

Web 服务器配置通常包括 URL 重写规则。你可以制作美观的 URL 方便用户理解,也可以让 URL 在资源迁移后仍然不变。

NGINX 配置(包括重写 URL)使用的指令数量较少,也被众多人士认为是简单明了。但如果不熟悉,使用前还是要经历一个学习过程。可以把 Creating NGINX Rewrite Rules 这篇文章当做介绍。

下面给出一个使用重写指令的 NGINX 重写规则样板。此规则查找了以 /download开头的 URL,之后还在路径中包含 /media//audio/ 目录。此规则用 /mp3/ 替换这些元素,并增加合适的文件扩展名 .mp3.ra。变量 (1 和 )2 获取保持不变的路径元素。例如,/download/cdn-west/media/file1 变成 /download/cdn-west/mp3/file1.mp3

server {
    ...
    rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
    rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
    return  403;
    ...
}

要在 NGINX 中实现类似 Apache 的效果,你可以在第一个服务器块中匹配短 URL 的请求,然后把它们重定向到匹配长 URL 的第二个服务器块。

# USE THIS CONVERSION
server {
    listen      80;
    server_name example.org;
    return      301 http://www.example.org$request_uri;
}

server {
    listen      80;
    server_name www.example.org;
    ...
}

技巧 8---实施负载均衡

扩充网站容量、提高网站可用性的终极办法就是运行多台应用程序服务器并实施负载均衡。

利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

配备 NGINX 的负载均衡 PHP 服务器,要实现 NGINX 负载均衡,首先用你需要均衡的各个服务器来创建一个服务器群组。然后编写配置代码,代码包括服务器权重---如果服务器的处理能力较强,请给它分配较大的权重,给它送去更多流量。

upstream stream_backend {
    server backend1.example.com:12345 weight=5;
    server backend2.example.com:12345;
    server backend3.example.com:12346;
}

技巧 9---启用会话持续性和会话耗尽

网络默认用于无状态交互;如果需要特定状态的信息,可以通过若干方法来实施。如果状态位于应用程序服务器上,就得让这台服务器在会话期间处理指定用户的所有请求,这就叫做会话持续。

要管理多个负载均衡的服务器,会话耗尽是一项有效工具。利用 NGINX Plus在一台服务器上的上游群组中设置耗尽参数,NGINX Plus 会让这台服务器放松下来,不会给它发送新的请求,而是让现有连接继续下去,直到会话结束。

技巧 10---启用监控和管理功能

如果服务器配置较为复杂,在保持高性能和避免宕机时,监测和管理就变得尤其重要。监控 NGINX 状态页,在服务器可能遇到麻烦时通知用户,让用户监测自己的系统,根据信息在问题发生前采取行动。

NGINX 提供了一个内置控制面板来监测 NGINX 服务器的健康状况。你可以收集 NGIGX 面板数据确定每台特定服务器是否有问题。

利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

结论

Python 创建的网站要能够同时吸引众多用户,那就需要强大的性能支持,如果你采用的是 Nginx 做 Web 服务器,可以从上面10个方面来优化性能。

本文转自 OneAPM 官方博客

原文地址:Maximizing Python Performance with NGINX, Part II: Load Balancing and Monitoring

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
再次搞定 Ali 云函数计算 FC
原本早就该写完了微信 SDK 授权服务上云计划由于对 Ali 云函数计算 FC 的不熟悉遇到了很多的坑,再前面的文章中还吐槽了一通。在服务顺利跑通后,这回实打实的来总结一下顺利上云的保守指南~
22853 0
特稿|过去5年,阿里云是如何打造云原生数据库PolarDB的
阿里云在云原生数据库领域的自研创新突围。
23400 0
如何优雅的消除系统重复代码
在程序猿的日常工作中,不仅要跟随业务侧的发展不断开发新的需求,同时也需要维护老的已有平台。无论是开发新需求还是维护老系统,我们都会遇到同样一个问题,系统中总是充斥着很多重复的代码。
23810 0
初识Serverless函数计算
Serverless 并不是没有服务器,而是开发者不再需要关心服务器。在传统 Serverful 架构下,部署一个应用需要购买服务器,部署操作系统,搭建开发环境,编写代码,构建应用,部署应用,配置负载均衡机制,搭建日志分析与监控系统,应用上线后,继续监控应用的运行情况。而在 Serverless 架构下,开发者只需要关注应用的开发构建和部署,无需关心服务器相关操作与运维,在函数计算架构下,开发者只需要编写业务代码并监控业务运行情况。这将开发者从繁重的运维工作中解放出来,把精力投入到更有意义的业务开发上。
24341 0
【AI征文】对DeepRec认识以及了解
对DeepRec认识以及了解
57468 0
Tensorflow Serving部署模型与调用
本文以mnist为数据集,使用keras 构建CNN网络,将训练获取的模型通过Tensorflow Serving方式部署提供Rest Full接口,分别使用PostMan和Python调用服务,代码编辑调试使用阿里云PAI DSW实例,模型部署使用阿里云ECS虚拟机。
6043 0
业务中台之上的低代码应用开发平台
中台低代码平台帮助开发者掌握全栈能力,促进开发者提高工作效率,基于企业数字化业务能力组件,可以实现业务应用的敏捷按需装配,成为企业组装式应用创新平台,进而实现企业业务能力的持续优化和复用,促进从组织到企业甚至行业的业务能力集约与创新。
100982 0
十分钟生成影视级室内设计效果,红星美凯龙设计云如何升级传统家居行业
依托于阿里云强大的弹性云上GPU算力,红星美凯龙可以为客户提供快速的、高质量的渲染,实现秒级的门店快速设计。
65947 0
+关注
oneapm_official
分享技术干货,解决性能问题,塑造品牌力量!
188
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载