性能測試-Hbase Hadoop監控


以前做過一個性能測試項目,基於nginx+Hbase+Hadoop,第一次接觸開源的東西,遇到各種問題,印象深的是Hbase和Hadoop的監控,當時也搜索到可以用開源的監控工具或寫代碼通過JMX取JVM的信息。在摸索的過程中發現一種更簡單方便的辦法,不用監控工具和寫大量代碼,直接用loadrunner腳本(該辦法可能不專業,但是能用,可以讓項目盡快進行,僅供參考)。

我們知道Hbase開放了60010和60030端口,Hadoop開放的50070端口,以web的方式查看master、region和hadoop的性能狀況(比如查看master只需要在瀏覽器輸入http://IP:60010/),可以查看進程的heap、request、queue使用情況,這些指標正是性能測試需要關注的。而這些信息是通過JMX傳遞,在瀏覽器中輸入http://IP:port/jmx,會以json的格式返回此刻進程JVM的情況,效果如截圖。

master信息

json信息

看到這些信息之后,我的第一反應就是這些返回的信息可用loadrunner的web_reg_save_param函數保存起來,然后寫到txt里面。

所以決定Hbase和Hadoop的資源監控流程:

1、loadrunner定時獲取json

2、講關鍵指標保存到txt

3、用excel生成趨勢圖

loadrunner腳本:

Action()
{
int filename;
int i;
int len;
char * item;

//hbase region 
lr_think_time(10);
lr_start_transaction("heap");
    web_reg_save_param_ex(
        "ParamName=regionHeap",
        "LB= : ",
        "RB=\n    },",
        SEARCH_FILTERS,
        "Scope=Body",
        "IgnoreRedirections=Yes",
        "RequestUrl=*/jmx*",
        LAST);

    web_url("jmx",
        "URL=http://IP:60030/jmx",
        "Resource=1",
        "RecContentType=application/json",
        "Referer=",
        "Snapshot=t1.inf",
        LAST);
    lr_error_message("region is %s", lr_eval_string("{regionHeap}"));
//hadoop namenode
    web_reg_save_param_ex(
        "ParamName=nameNodeHeap",
        "LB= : ",
        "RB=\n    },",
        SEARCH_FILTERS,
        "Scope=Body",
        "IgnoreRedirections=Yes",
        "RequestUrl=*/jmx*",
        LAST);

    web_url("jmx",
        "URL=http://IP:50070/jmx",
        "Resource=1",
        "RecContentType=application/json",
        "Referer=",
        "Snapshot=t1.inf",
        LAST);
    lr_error_message("nameNodeHeap is %s", lr_eval_string("{nameNodeHeap}"));
//hbase master
    web_reg_save_param_ex(
        "ParamName=masterHeap",
        "LB= : ",
        "RB=\n    },",
        SEARCH_FILTERS,
        "Scope=Body",
        "IgnoreRedirections=Yes",
        "RequestUrl=*/jmx*",
        LAST);
    web_url("jmx",
        "URL=http://IP:60010/jmx",
        "Resource=1",
        "RecContentType=application/json",
        "Referer=",
        "Snapshot=t1.inf",
        LAST);
    lr_error_message("master is %s", lr_eval_string("{regionHeap}"));
lr_end_transaction("heap",LR_AUTO);

//write text
filename=fopen("E:\\cowen\\B2C\\monitor\\master.txt","a");//w-write,r-read,a-append
fprintf(filename,"%s",lr_eval_string("{masterHeap}"));
    fprintf(filename,"%s","\n");
    fclose(filename);

filename=fopen("E:\\cowen\\B2C\\monitor\\region.txt","a");//w-write,r-read,a-append
fprintf(filename,"%s",lr_eval_string("{regionHeap}"));
    fprintf(filename,"%s","\n");
    fclose(filename);

filename=fopen("E:\\cowen\\B2C\\monitor\\namenode.txt","a");//w-write,r-read,a-append
fprintf(filename,"%s",lr_eval_string("{nameNodeHeap}"));
    fprintf(filename,"%s","\n");
    fclose(filename);
return 0;
}

效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM