【乾貨】前方高能!如何保障Python應用的高性能

 

Python做爲一種推崇「簡單、優雅、明確」的面嚮對象語言,以其簡捷明瞭的語法結構,豐富的類庫,出色的易用性在互聯網時代獲得了普遍的應用。不管是國外的Facebook、Youtube、Instagram、Pinterest,仍是國內的知乎、豆瓣,用Python開發的Web應用已經無處不在。python

 

而隨着雲計算時代的到來,以及基於Python的雲架構開源項目OpenStack的流行,愈來愈多的企業開始引入雲服務的概念,嘗試利用雲計算服務來構建新的高可用架構。而一樣地,企業級應用程序的設計與開發方式也發生了轉變——開發人員須要構建原生的雲計算應用,以便更有效的下降運營成本並提高靈活性。利用雲平臺與雲服務再結合Python來進行應用開發,就成爲了一種行之有效的途徑。nginx

Python確實是個好語言,簡單易用上手快,標準庫和PyPI第三方庫有豐富而又有用的資源,能夠快速的解決開發者的問題,而不用重複造輪子,這些特色使得Python這幾年逐漸流行起來。相對而言,C受限於較爲低級的語法,開發週期長,通常用來開發性能要求高的軟件。Java偏重於企業開發,緩慢的JVM啓動速度致使Java不適合用來開發系統管理腳本。而Python做爲一個多面手,被普遍應用於Web開發、科學計算、數據分析、雲計算(OpenStack)、運維平臺和自動化運維(SaltStack)等。web

Python的優勢不少,但隨着企業業務向雲端和移動互聯網上的遷移,真實線上環境的複雜性,巨大的流量壓力,以及IT架構的高可用問題,都會形成Python應用的性能瓶頸。做爲Pythoner的你是否常被這幾個問題所困擾:apache

l  代碼執行速度真的很快嗎?服務器

l  代碼性能瓶頸出在哪裏?網絡

l  內存消耗大不大?架構

l  是否存在內存泄漏?框架

透視寶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所安裝的主機,按如下說明來安裝、配置及開啓相關代碼插件。

 

一、安裝Python應用發現插件

根據Web容器類型安裝應用發現插件,該插件可自動發現容器內的全部應用實例並生成應用拓撲圖。

l  若是直接使用的Python Server,能夠直接跳過本步驟。

l  若是Web容器爲Apache

請安裝並配置Apache類型的應用發現插件ApacheApp,配置完成後開啓插件。

l  若是Web容器是Nginx

請首先在插件的配置界面中選擇安裝Nginx類型的應用發現插件NginxApp。安裝完成以後您還須要配置Nginx插件,與Apache不一樣的是,此時您須要在主機上手工編譯,請參考安裝目錄中「./plugins/nginx_path/README」文檔。

二、安裝並開啓Python代碼監控插件PythonCode

選擇PythonCode插件安裝並開啓,SmartAgent將自動下載插件至安裝目錄的smart_agent/plugins下。

默認會使用系統Python進行安裝。修改PythonAgent.sh中PythonCommand值,可安裝至系統中其餘Python環境。

三、重啓Web Server

安裝開啓Python代碼監控插件後,可能須要您手動重啓web Server(apache\httpd\Nginx\Python Server等軟件)。

四、查看Python應用數據

配置完成後,大體兩分鐘後您就能夠在「應用」模塊中查看數據。

 

透視寶官網:www.toushibao.com

相關文章
相關標籤/搜索