但当监控的服务器数量较多时,依次采集多个nmon文件中的性能指标结果会耗费时间,同时,人工读取和记录数据也可能会出现记录错误的偶然误差。因此我们可以尝试使用自己熟悉的编程语言,如<em>Python</em>等,来开发一款简单易
2021-05-19 20:00:19
關注我,每天分享軟體測試技術乾貨、面試經驗,想要領取測試資料、進入軟體測試學習交流群的可以直接加atstudy-js
1.背景
在效能測試過程中,往往需要監控伺服器的效能情況,並記錄這些效能指標結果。不論是雲下資料庫伺服器還是應用伺服器,都可以通過nmon來進行監控,設定打點間隔和打點次數,將效能指標情況儲存成nmon檔案,並通過工具,如Excel插件Nmon_Analyzer、Java GUI工具nmon visualizer等讀取nmon檔案內容,分析採集結果。
但當監控的伺服器數量較多時,依次採集多個nmon檔案中的效能指標結果會耗費時間,同時,人工讀取和記錄資料也可能會出現記錄錯誤的偶然誤差。因此我們可以嘗試使用自己熟悉的程式語言,如Python等,來開發一款簡單易實現的小工具,用於自動採集效能測試nmon檔案中的效能測試指標。
2. 工具介紹與設計
工具實現的基本思想是逐個掃描指定路徑下的nmon檔案,根據nmon檔案的內部格式,提取出目標效能指標資料,再對提取出來的資料進行加工處理,得到結果,並將結果自動儲存到新生成的結果Excel檔案中。為了更直觀地獲取使用者輸入的nmon檔案路徑及結果儲存路徑,我們可以編寫GUI介面,利用介面上的文字輸入框來獲取使用者的輸入,並採用介面上的按鈕來觸發這一採集事件。
圖1 工具設計流程圖
3. 工具實現
(1)匯入所需模組
由於我們的工具中包含對檔案和路徑進行操作,這需要依賴os模組實現。在逐行讀取nmon檔案內容時,用codecs提供的open方法來指定開啟的檔案的語言編碼,它會在讀取的時候自動轉換為內部unicode。re模組是python獨有的匹配字元串的模組,利用正則表示式對字元串進行模糊匹配,提取自己需要的字元串部分,使用該模組可以實現逐行掃描進行模糊匹配查詢到CPU和記憶體的相關效能指標。xlwt庫的作用是將資料寫入Excel表格中。Tkinter 是 Python 的標準 GUI 庫,匯入 Tkinter 模組後可以使用控制項快速的創建 GUI 應用程式。 tkinter.StringVar 能自動重新整理的字元串變數,可用set和get方法進行傳值和取值,以此來接收使用者輸入。
圖2 程式碼-匯入所需模組
(2)視窗的實現
利用Tkinter模組創建視窗並插入輸入框控制項用來獲取使用者輸入的路徑資訊,輸入框的內容儲存到StringVar當中,設定按鈕Button用於和滑鼠點選事件繫結。
圖3 程式碼-視窗的實現
圖3 視窗的實現圖
(3)編寫事件程式碼——求CPU平均利用率的函數
不同版本的nmon檔案內部格式略有不同,因此在編寫程式時,要先了解目標版本的內部結構,用來確定字元串模式匹配時,需要利用nmon檔案中效能指標相關內容的哪些特徵。
為了計算均值,需要獲取nmon檔案中記錄的打點次數。通過了解nmon檔案中AAA參數是關於作業系統以及nmon本身的一些資訊,可以查詢該行來進行提取。
圖4 程式碼-獲取打點次數和打點間隔
CPU_ALL參數是對所有CPU的概述,顯示所有CPU平均佔用情況,將記錄的CPU佔用率逐個取出存放在數組裡,並求陣列元素的平均值,即為整個監控期間CPU的平均利用率,函數將該值返回。
圖5 程式碼-求CPU平均利用率
(4)編寫事件程式碼——求記憶體均佔用率的函數
類似地,通過MEM參數獲取記憶體佔用情況,與CPU情況不同的是,該參數行包括多項記憶體相關指標,而在監控效能指標時,我們常用公式1來計算記憶體的佔用率,因此需要從MEM參數中提取相關指標,包括memtotal、memfree、cached、buffers,按照公式進行計算,並返回記憶體佔用率。
公式1 記憶體佔用率常用計算公式
圖6 程式碼-求記憶體佔用率
(5)編寫事件程式碼——滑鼠點選事件
該事件用於和介面上的按鈕Button進行繫結,實現當點選按鈕後的一系列操作:從輸入框取nmon檔案路徑和目標儲存路徑,生成Excel檔案並創建工作表,寫入預設的表頭內容,呼叫求CPU平均利用率的函數和求記憶體均佔用率的函數,將返回的值寫入Excel檔案並儲存。
圖7 程式碼-滑鼠點選事件
4. 總結
該工具是基於Python語言的簡單實踐,可以實現批量自動提取nmon檔案中的效能指標結果,並且可以沿用本思路根據需要對工具的功能進行修改或擴展。使用本工具進行效能結果的自動採集相比人工讀取數值更加節省時間,並且避免了記錄時出現錯誤的偶然誤差,有助於提升準確度和測試效率。
相關文章
但当监控的服务器数量较多时,依次采集多个nmon文件中的性能指标结果会耗费时间,同时,人工读取和记录数据也可能会出现记录错误的偶然误差。因此我们可以尝试使用自己熟悉的编程语言,如<em>Python</em>等,来开发一款简单易
2021-05-19 20:00:19
我们都知道PS处理起照片来是很有一手的,但PS能做到的,我<em>Python</em>自然也可以!今天我们来康一康一个好玩的包,PIL。PIL是<em>Python</em>的一个第三方图像处理库,可以很方便地对图像进行批处理、颜色变换、旋转等等,简
2021-05-19 20:00:05
因此在未来可能通过不断竞争将会出现限数量的供应商主导市场,类似于现在使用的Windows、<em>Mac</em>和Linux操作系统。合规化同样是当下物联网面临的问题之一,特别是数据隐私问题。目前数据隐私已成为网络社会的一个关
2021-05-19 19:32:58
当库克在发布会上讲我们成功地用M1芯片的性能将<em>Mac</em>BookAir的风扇给去掉了,不仅保持了良好的散热性能,而且还大幅度地减轻了电脑的体重,当时有很多质疑的声音,没有风扇散热不可能做得好,但事实是……Apple M1,苹果
2021-05-19 19:32:54
内采用<em>AMD</em> Ryzen 5000H标压处理器,可选R5 5600H和R7 5800H,最高配8核/16线程,最高54W性能释放,得益于Zen3架构,单核心性能强悍。发布会上没有介绍独显部分,大概率是没有,依靠CPU的VEGA 8 核显,全系配备16GB
2021-05-19 19:32:30
硬件层面上,素质很棒的大尺寸屏幕配合 <em>AMD</em> 锐龙 5000 系列标压处理器,让它拥有了应付各类办公学习需求的基础,而出色的跨设备连接能力以及软件应用性,对于实际使用体验所带来的提升,也是实实在在的。 但由于
2021-05-19 19:32:07