[干货] 前方高能!如何保障 Python 应用的高性能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cloudwise
V2EX    监控宝

[干货] 前方高能!如何保障 Python 应用的高性能

  •  
  •   cloudwise 2015-09-21 14:49:07 +08:00 2592 次点击
    这是一个创建于 3721 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Python 作为一种推崇“简单、优雅、明确”的面向对象语言,以其简捷明了的语法结构,丰富的类库,出色的易用性在互联网时代得到了广泛的应用。不论是国外的 Facebook 、 Youtube 、 Instagram 、 Pinterest ,还是国内的知乎、豆瓣,用 Python 开发的 Web 应用已经无处不在。
    a target="_blank" href="/i/dA1IyG66l.png" target="_blank" title="在新窗口打开图片 dA1IyG66l.png">
    而随着云计算时代的到来,以及基于 Python 的云架构开源项目 OpenStack 的流行,越来越多的企业开始引入云服务的概念,尝试利用云计算服务来构建新的高可用架构。而同样地,企业级应用程序的设计与开发方式也发生了转变开发人员需要构建原生的云计算应用,以便更有效的降低运营成本并提升灵活性。利用云平台与云服务再结合 Python 来进行应用开发,就成为了一种行之有效的途径。
    Python 确实是个好语言,简单易用上手快,标准库和 PyPI 第三方库有丰富而又有用的资源,可以快速的解决开发者的问题,而不用重复造轮子,这些特点使得 Python 这几年逐渐流行起来。相对而言, C 受限于较为低级的语法,开发周期长,一般用来开发性能要求高的软件。 Java 偏重于企业开发,缓慢的 JVM 启动速度导致 Java 不适合用来开发系统管理脚本。而 Python 作为一个多面手,被广泛应用于 Web 开发、科学计算、数据分析、云计算(OpenStack )、运维平台和自动化运维(SaltStack )等。
    Python 的优点很多,但随着企业业务向云端和移动互联网上的迁移,真实线上环境的复杂性,巨大的流量压力,以及 IT 架构的高可用问题,都会造成 Python 应用的性能瓶颈。作为 Pythoner 的你是否常被这几个问题所困扰:
    代码执行速度真的很快吗?
    代码性能瓶颈出在哪里?
    内存消耗大不大?
    是否存在内存泄漏?
    透视宝 Python 监控实现原理
    在刚刚举行的 PyConChina 2015 大会上,国内领先的应用性能管理服务商云智慧 VP 刘国强 (Bruce Liu )先生,为广大 Pythoner 带来《 Python 应用性能管理》主题分享,和大家一同探讨云智慧透视宝是如何保障 Python 应用在生产环境下的高性能。

    针对复杂的 IT 架构,云智慧采用 Backbone 分布式监测节点监控,实现系统统一调度监控任务,所有监控点同步执行,依赖可靠的骨干网监测点执行监控任务,技术上消除网络抖动和噪声带来的干扰,稳定可靠的数据可以用于评估 SLA 。

    而部署在应用系统中的智能探针会根据应用系统的语言,自动安装对应的探针程序,并为系统绘制应用拓扑。透视宝 Python 探针 pythonAgent 会在框架的 RequestHandler 添加上下文管理器(context manager ),通过 Smartpythonagent 模块实现上下文管理协议的__enter__() 和 __exit__() 方法控制 tracer 进程的起始和结束。 Tracer 进程通过 python 的 sys.settrace ()库方法进行开启和结束代码的 trace 过程。
    Output 模块会对 tracer 进程返回的代码 trace 信息进程处理生成我们想要的数据。其中的 tree 是对代码执行过程以方法名作为节点生成树状的结构,能直接通过 tree 来还原代码执行时的方法调用过程。而 Map 则记录 tree 中每个节点的执行信息,如消耗内存,执行时间等。 Output 模块处理完数据后会向 smartAgent 的 sendproxy 发送数据,最后 sendproxy 会向透视宝服务器发送数据。 pythonAgent 的 tracer 进程能跟踪到'call', 'line', 'return', 'exception', 'c_call', 'c_return', or 'c_exception'事件。

    依托于各种 Web 轻量级应用框架, Python 在 Web 应用上得到最广泛支持,而透视宝的 SmartAgent 支持主流的 Django 、 Tornado 、 CherryPy 、 Flask 、 Pylons 、 Bottle 等应用框架,保证 Python 代码性能数据抓取的准确性和高效能。配合透视宝部署在服务端的其他应用服务监控,包括 Apache 、 Nginx 、 Tomcat 、 Weblogic 、 MySQL 、 Memcache 、 Redis 、 Oracle 、 MongoDB 、 PostgreSQL 等,开发和运维人员能够第一时间发现应用系统的潜在问题,准确定位应用执行缓慢的真实原因。
    如何利用透视宝监控 Python 应用
    用户可以访问透视宝产品网站: http://toushibao.com/ ,申请免费试用帐号,进入应用管理,下载 Smart Agent 并进行安装,安装完成访问“系统→插件管理”,找到 Smart Agent 所安装的主机,按以下说明来安装、配置及开启相关代码插件。

    1 、安装 Python 应用发现插件
    根据 Web 容器类型安装应用发现插件,该插件可自动发现容器内的所有应用实例并生成应用拓扑图。
    如果直接使用的 Python Server ,可以直接跳过本步骤。
    如果 Web 容器为 Apache
    请安装并配置 Apache 类型的应用发现插件 ApacheApp ,配置完成后开启插件。
    如果 Web 容器是 Nginx
    请首先在插件的配置界面中选择安装 Nginx 类型的应用发现插件 NginxApp 。安装完成之后您还需要配置 Nginx 插件,与 Apache 不同的是,此时您需要在主机上手工编译,请参考安装目录中“./plugins/nginx_path/README ”文档。
    2 、安装并开启 Python 代码监控插件 PythonCode
    选择 PythonCode 插件安装并开启, SmartAgent 将自动下载插件至安装目录的 smart_agent/plugins 下。
    默认会使用系统 Python 进行安装。修改 PythonAgent.sh 中 PythonCommand 值,可安装至系统中其他 Python 环境。
    3 、重启 Web Server
    安装开启 Python 代码监控插件后,可能需要您手动重启 web Server ( apache\httpd\Nginx\Python Server 等软件)。
    4 、查看 Python 应用数据
    配置完成后,大致两分钟后您就可以在“应用”模块中查看数据。

    透视宝官网: www.toushibao.com
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4532 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 09:55 PVG 17:55 LAX 01:55 JFK 04:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86