LR如何監控tomcat性能

mf7x 9年前發布 | 20K 次閱讀 測試工具 Tomcat

使用LoadRunner做性能測試,一般的直覺是LR只能完成腳本錄制和編寫模擬用戶的請求行為,但是在某些情況下,要監控一些中間件或web 服務器的性能時,就不能通過錄制腳本來完成了,那么就需要手工來編寫腳本,通過LR自帶的lr_user_data_point(“”,””)打點函數進 行自定義的監控其性能指標。

這里以監控Tomcat web服務器為例。

實現思路:

1、  配置Tomcat登錄用戶,找到tomcat-6.0.37目錄下的/conf/ tomcat-users.xml,添加配置如下:

<tomcat-users>
<role rolename="manager-gui"/>
<user username="monitor" password="123456" roles="manager-gui"/>
</tomcat-users>

(配置Tomcat登錄用戶后,建議測試一下配置的用戶登錄能否登錄進入Tomcat管理頁面)

2、  在Action腳本中,使用web_set_user("用戶名","密碼","tomcat服務器所在的IP地址:端口");

3、  腳本中編寫web_url(); 模擬訪問Tomcat的url 并登錄

4、  利用關聯函數web_reg_save_parm()動態地捕獲想要的數據

5、  最后利用打點函數lr_user_data_point(“監控指標名”,”監控指標值”);記錄用戶自定義的數據樣本

VuGen腳本代碼如下:

Action_tomcat()
{
    double atof(const char * string);
    web_reg_save_param("JVM_FreeMemory",
      "LB=Free memory: ",
      "RB= MB",
      "Ord=1",
      LAST);
    web_reg_save_param("JVM_TotalMemory",
      "LB=Total memory: ",
      "RB= MB",
      "Ord=1",
      LAST);
    web_reg_save_param("JVM_MaxMemory",
      "LB=Max memory: ",
      "RB= MB",
      "Ord=1",
      LAST);
    web_reg_save_param("HTTP_MaxThreads",
      "LB=Max threads: ",
      "RB= ",
      "Ord=1",
      LAST);
    web_reg_save_param("HTTP_MaxProcessingTime",
      "LB=Max processing time: ",
      "RB= s",
      "Ord=1",
      LAST);
    web_reg_save_param("HTTP_RequestCount",
      "LB=Request count: ",
      "RB= ",
      "Ord=1",
      LAST);
    web_reg_save_param("HTTP_BytesReceived",
      "LB=Bytes received: ",
      "RB= MB",
      "Ord=1",
      LAST);
    web_set_user("monitor","123456","localhost:8088");
    lr_think_time(5);
    web_url("status",
            "URL=http://localhost:8088/manager/status",
            "Resource=0",
            "Referer=",
            "Snapshot=t1.inf",
            "Mode=HTML",
            LAST);
    lr_user_data_point("Tomcat_JVM_FreeMemory",atof(lr_eval_string("{JVM_FreeMemory}")));
    lr_user_data_point("Tomcat_JVM_TotalMemory",atof(lr_eval_string("{JVM_TotalMemory}")));
    lr_user_data_point("Tomcat_JVM_MaxMemory",atof(lr_eval_string("{JVM_MaxMemory}")));
    lr_user_data_point("Tomcat_HTTP_MaxThreads",atof(lr_eval_string("{HTTP_MaxThreads}")));
    lr_user_data_point("Tomcat_HTTP_MaxProcessingTime",atof(lr_eval_string("{HTTP_MaxProcessingTime}")));
    lr_user_data_point("Tomcat_HTTP_ProcessingTime",atof(lr_eval_string("{HTTP_ProcessingTime}")));
    lr_user_data_point("Tomcat_HTTP_RequestCount",atof(lr_eval_string("{HTTP_RequestCount}")));
    lr_user_data_point("Tomcat_HTTP_BytesReceived",atof(lr_eval_string("{HTTP_BytesReceived}")));
    return 0;
}

運行腳本,查看回放日志:

LR如何監控tomcat性能

腳本編寫好(注意:建議將監控Tomcat的這段腳本代碼放在新插入一個Action里面,并且放在之前錄制來的業務腳本后面),接下來,優化業務腳本,創建Controller等與平時的性能測試流程一樣就好了。

在Controller監控場景圖中,添加“運行時圖-用戶定義的數據點圖”

最后在Analysis生成結果分析報告中,可以看到“運行時圖-用戶定義的數據點圖”是顯示有數據的,如圖:

LR如何監控tomcat性能

注意:這里的Tomcat_JVM_FreeMemory 和 Tomcat_HTTP_RequestCount的值會變大些,而Tomcat_HTTP_MaxThreads、 Tomcat_JVM_MaxMemory、Tomcat_HTTP_MaxProcessingTime等這些值不會變化很大其原因基本上是 tomcat自身的限制。

結論:可以看出,4~5min期間存在tomcat處理客戶端請求瓶頸,后續需要觀察其他圖進行分析,可能是CPU瓶頸。

 本文由用戶 mf7x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!