Generating Websphere verboseGC Graph in LoadRunner Analysis tool
Few weeks ago, I was working for a client and I wanted to analyze Websphere Application server verboseGC logs. I could have used tools such as IBM PMAT but what I really wanted was to merge verboseGC graph with response time graph in Load Runner and this required a lot of manual work. Therefore, I modified existing Silkperformer vbscript to Websphere verboseGC vbscript.
For the blogging purpose, this script saves only handful of verboseGC attributes into CSV file. You can then import the csv file as an external monitor in Load Runner Analysis tool.
NOTE: You can modify this script to suit your requirements. Also make sure everything is contained within verbosegc tag in your verboseGC log file. See the example below.
Please read the following blog on how to generate the CSV file.
Websphere verboseGC Vbscript
Option Explicit
Dim xmlDoc
Dim af, gc, timestamp, gcIntervalms, DateTimeArray, afDate, afTime, afIntervalms,minimum,requestedBytes,Totalms,gcTotalms,gcTotal,Time
Dim reportFile, outputFile
Dim myFSO, fileHandle
'Murray Wardle code
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Const ForReading = 1, ForWriting = 2, ForAppending = 8
If Wscript.Arguments.Count = 0 Then
msgbox "Please specify the overview Report file to process"
Else
' Get report file name & set output filename
reportFile = Wscript.Arguments(0)
outputFile = Left(reportFile, Len(reportFile)-3) + "csv"
xmlDoc.async = false
xmlDoc.SetProperty "SelectionLanguage", "XPath"
xmlDoc.SetProperty "ServerHTTPRequest", True
xmlDoc.validateOnParse = False
xmlDoc.resolveExternals = False
'load overview report
xmlDoc.load(reportFile)
xmlDoc.setProperty "SelectionLanguage", "XPath"
'open csv file to dump results into
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set fileHandle = myFSO.OpenTextFile(outputFile, ForWriting, True)
'Modified code for verboseGC
fileHandle.WriteLine("date,time,afIntervalms,requestedBytes,gcIntervalms,gcTotalms,Totalms")
For Each af In xmlDoc.SelectNodes("//af")
timestamp = af.getAttribute("timestamp")'get af timestamp attribute value
DateTimeArray=Split(timestamp," ",-1,1) 'split the date time into array
afDate=FormatDateTime(DateTimeArray(1)+"/"+DateTimeArray(0)+"/"++DateTimeArray(3),vbShortDate) 'format into date
afTime=FormatDateTime(DateTimeArray(2),vbLongTime) 'format into time
afIntervalms=af.getAttribute("intervalms") 'get af intervalms attribute value
For Each minimum In af.SelectNodes("./minimum") 'get minimum requested bytes value
requestedBytes = minimum.getAttribute("requested_bytes")
Next
For Each gc In af.SelectNodes("./gc") 'get gc intervalms value
gcIntervalms = gc.getAttribute("intervalms")
Next
For Each gcTotal In af.SelectNodes("./gc/time") 'get total gc time value
gcTotalms = gcTotal.getAttribute("totalms")
Next
For Each Time In af.SelectNodes("./time")
Totalms = Time.getAttribute("totalms") 'get total time value
Next
fileHandle.WriteLine(afDate+","+afTime+","+afIntervalms+","+ requestedBytes+","+ gcIntervalms+","+gcTotalms+","+Totalms)
Next
fileHandle.Close
end if
No comments:
Post a Comment