身處互連網的SA(營運)們總感歎自己職業的苦逼,Why?我來告訴你:APP奔潰、網站打不開、網站502、搜尋緩慢、應用卡頓通通找營運,運營、專案經理、老闆等等圍著營運,看其救火。有些營運甚至受到各種指責,例如:技術差、準備不充分、伺服器最佳化的不行等等。面對千千萬萬的項目,營運為什麼總在救火和受委屈,而研發卻在不斷製造BUG。
問題定位
一旦出現故障,通常先查日誌,通過日誌分析定位到某些伺服器及項目,緊接著縮小範圍至某個項目,最後SA與研發之間各種配合,最終找出問題並修複。
每次緊急救火之後,營運總會發問:為什麼不能提前發現問題?是否有一個工具能讓營運/開發事先發現問題並消灰掉,或者上線能夠在故障出現之時快速定位到穩定。大家都應該認識到,通過常規方式來定位代碼問題效率非常低,而且非常考驗技術人員對業務熟悉程度以及個人技術能力。
解決方案
在日常工作中,常有人諮詢我系統出現某種問題或者偶爾出現問題時怎麼尋找原因,除了給出解決方案以外,我總會告訴他:去試試APM吧,能夠幫你快速發現問題,定位問題的原因。今天我要給SA們介紹一款國內純自主開發的APM產品---透視寶。
透視寶功能
APM是應用效能管理(Application Performance Management)的縮寫,通過對IT系統進行代碼級的即時監測和分析,即時發現系統運行瓶頸,並進行警示和預警,協助營運、開發迅速定位系統問題。透視寶包含APM(應用效能管理)、mobile、browser、host四項功能:
透視寶之安裝
透視寶的安裝比較簡單,透視寶官方文檔也非常清楚。
請直接看文檔: http://portal.toushibao.com/app/create
透視寶之主機管理
安裝完Smart Agent之後,登陸透視寶後台便能看到新增加的主機,如:
今天的主題不在“主機”,既然提到了,那麼我簡單的給大家展示透視寶下的主機基本監控。
伺服器CPU、記憶體、進程、網卡、TCP監控項都有。如果這些基礎監控能夠滿足你,那麼完全可以放棄Zabbix等上手困難的開源監控產品了。看看監控效果:
透視寶之APM
透視寶APM目前支援主流的Java、PHP、Python、.Net四種語言的代碼效能監測,PHP監測已經支援最新的PHP7正式版,我們主要以PHP為例感受一下APM的威力。
備忘:起初準備拿ttlsa.com來體驗,因為種種原因,最終換成了另外一個測試網站,請求量稍微少點,但是追蹤PHP效能問題的方法還是一樣的,一樣能協助我們找出代碼效能問題。
點擊應用,並選擇你需要追蹤的網域名稱,通過請求、資料庫、錯誤這三項目來找出PHP效能問題所在
APM之請求
首先看概覽圖,著重看緩慢、非常緩慢、錯誤的比率,如果比較高,那麼要引起重視。
正常:<500毫秒、緩慢:500-2000毫秒,非常慢:>2000毫秒
透視寶列出所有請求URL,以及URI對應的回應時間與請求數。
按照回應時間排序,點擊回應時間較長的URL,右側出現如下記錄
點擊記錄進行追蹤,可以看到整個請求耗時TOP5的方法,並可進行代碼追蹤、擷取請求參數、SQL語句,最真實的還原當時環境。
這裡非常重要,耗時(MS)越長的函數/方法說明效能越差. 由此,基本上已經定位到了效能問題代碼,把相應的方法給研發吧。發現沒?不懂代碼的你也能抓出PHP效能代碼。
通過當前的請求參數最真實的還原現場
一個緩慢響應請求部分由代碼寫法不恰當引起,還有一部分由效率低下的慢SQL引起。透視寶能夠追蹤到一個請求包含的所有SQL語句;由此,我們能快速的定位到SQL問題,並提交給研發/DBA最佳化。
APM之資料庫
透視寶APM能夠通過”請求”找出效能差的code、效能低下的慢SQL。透視寶能夠通過”資料庫”找出效能低下的慢SQL,並找出慢SQL對應的請求。”資料庫”這塊建議DBA經常瀏覽,並定期最佳化慢SQL。
透視寶提供了非常清晰易懂的SQL效能圖表,讓開發人員清晰的瞭解當前SQL使用方式,例如:SQL操作回應時間(TOPS)、輸送量(含select、delete、insert、update)
透視寶會列出所有SQL巨集指令清單,按照平均回應時間排序,選擇需要解決的SQL記錄,可定位對應請求耗時的介面/頁面以及對應的慢SQL語句。
慢SQL追蹤
APM之錯誤
除了透過請求與資料庫來發現問題之外,我們也應該經常關注”錯誤”。
附錄:透視寶外掛程式
SendProxy、Discover和OSAgent外掛程式是Smart Agent預設的基礎外掛程式,目前Smart Agent提供的外掛程式如下表所示。