V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cloudwise
V2EX  ›  监控宝

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

  •  
  •   cloudwise · 2015-09-21 14:49:07 +08:00 · 1989 次点击
    这是一个创建于 3148 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Python 作为一种推崇“简单、优雅、明确”的面向对象语言,以其简捷明了的语法结构,丰富的类库,出色的易用性在互联网时代得到了广泛的应用。不论是国外的 Facebook 、 Youtube 、 Instagram 、 Pinterest ,还是国内的知乎、豆瓣,用 Python 开发的 Web 应用已经无处不在。

    而随着云计算时代的到来,以及基于 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   ·   我们的愿景   ·   实用小工具   ·   753 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:06 · PVG 05:06 · LAX 14:06 · JFK 17:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.