問在生產環境的問題,猜想題主已是python領域相當有開發經驗了。
有以下幾點拙見,但是每個環境差別比較大,需具體分析:
1、檢視伺服器系統記憶體、網路、cpu等工作日誌明細,以便定位
檢視系統日誌,python(psutil等)也可以寫,但最好是這個python程序之外的程式去監控。把此程序作為黑盒去監控(如果監控python程序內部的每個變數的使用情況,也沒有意義)。
2、360度無死角且動態日誌監控
日誌模組如logging,pyinotify等,也可以自己寫一套日誌系統。每呼叫一個方法(包括子方法、私有方法、靜態方法等)、每個過程(如初始化類、呼叫資料庫連線或資料庫連結池)都需要寫入日誌。當然寫日誌的工具和模組還有很多。
3、哪裡出錯哪裡發信息
在監控的位置發給開發者(或負責人)簡訊或郵件,主要記錄出錯時的堆疊資訊等。第一時間得到通知。
4、建立好異常跟蹤系統(甩鍋系統)
做好異常傳遞跟蹤系統。意思是除正常的非同步捕獲外,呼叫(方法)介面如果不是自己發生的異常,就往上拋給上級,一級一級的傳遞,一級一級的甩鍋。
5、版本控制系統
一般有問題,有可能是版本更新的問題。這時候需要管理配置檔案系統,如管理兩套配置檔案系統等等。
每次發版都有AB(藍綠)兩個版本,部分流量漸增的模式,以便查詢定位python出錯程式碼位置。
6、資料庫版本控制,問題重現
資料庫已插入資料按時段回滾,然後問題重現。
7、能定位問題的方式還有很多,也和個人的經驗有很大關係。
個人愚見,僅供參考
問在生產環境的問題,猜想題主已是python領域相當有開發經驗了。
有以下幾點拙見,但是每個環境差別比較大,需具體分析:
1、檢視伺服器系統記憶體、網路、cpu等工作日誌明細,以便定位
檢視系統日誌,python(psutil等)也可以寫,但最好是這個python程序之外的程式去監控。把此程序作為黑盒去監控(如果監控python程序內部的每個變數的使用情況,也沒有意義)。
2、360度無死角且動態日誌監控
日誌模組如logging,pyinotify等,也可以自己寫一套日誌系統。每呼叫一個方法(包括子方法、私有方法、靜態方法等)、每個過程(如初始化類、呼叫資料庫連線或資料庫連結池)都需要寫入日誌。當然寫日誌的工具和模組還有很多。
3、哪裡出錯哪裡發信息
在監控的位置發給開發者(或負責人)簡訊或郵件,主要記錄出錯時的堆疊資訊等。第一時間得到通知。
4、建立好異常跟蹤系統(甩鍋系統)
做好異常傳遞跟蹤系統。意思是除正常的非同步捕獲外,呼叫(方法)介面如果不是自己發生的異常,就往上拋給上級,一級一級的傳遞,一級一級的甩鍋。
5、版本控制系統
一般有問題,有可能是版本更新的問題。這時候需要管理配置檔案系統,如管理兩套配置檔案系統等等。
每次發版都有AB(藍綠)兩個版本,部分流量漸增的模式,以便查詢定位python出錯程式碼位置。
6、資料庫版本控制,問題重現
資料庫已插入資料按時段回滾,然後問題重現。
7、能定位問題的方式還有很多,也和個人的經驗有很大關係。
個人愚見,僅供參考