我正在使用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
Jim Mischel.. 6
我非常怀疑问题出在重定向输出上.我经常创建重定向的StdOut文件,其大小为数百兆字节.
更有可能的是,有关编码记录,创建SOAP消息或发出Web服务请求的内容正在泄漏内存.
您可以考虑注释掉将响应时间写入StdOut的行,然后重新运行该程序.如果程序仍然开始减速,那么你已经消除了输出作为原因.
我非常怀疑问题出在重定向输出上.我经常创建重定向的StdOut文件,其大小为数百兆字节.
更有可能的是,有关编码记录,创建SOAP消息或发出Web服务请求的内容正在泄漏内存.
您可以考虑注释掉将响应时间写入StdOut的行,然后重新运行该程序.如果程序仍然开始减速,那么你已经消除了输出作为原因.