我正在使用WSF,VBS和JavaScript脚本系统来推动Web服务负载测试。加载驱动程序在我的工作站上运行,将请求发送到远程应用程序服务器。我在驱动程序脚本中使用WScript.StdOut.Write
来编写结果,并在运行测试时将输出重定向到文本文件:
cscript //nologo driver.wsf > test_results.txt
当我使用仅有100个事务的“冒烟测试”输入文件时,测试运行得相当快,没有问题。当我使用200,000个事务的“负载测试”输入文件时,驱动程序的性能会随着时间的推移而降低,直到它运行的工作站变得无响应并且正在使用85%的页面文件。我test_results.txt
文件的大小刚刚超过43GB。
我怀疑Windows正在将StdOut输出缓存到内存而不是将其写入文件;有没有人有其他解释或其他想法?将输出作为文件系统对象从我的脚本管理而不是使用StdOut会不会更好?
更新: 我的驱动程序基本上这样做(伪代码):
Open input file
Read a record
While not EOF
Encode record
Create SOAP message containing record
Make web service request
Write time to get response to StdOut
Read another record
End While
Close input file
答案 0 :(得分:6)
我非常怀疑问题出在重定向输出上。我经常创建重定向的StdOut文件,其大小为数百兆字节。
更有可能的是,有关编码记录,创建SOAP消息或发出Web服务请求的内容正在泄漏内存。
您可以考虑注释掉将响应时间写入StdOut的行,然后重新运行该程序。如果程序仍然开始减速,那么你已经将输出消除了原因。