【发布时间】:2011-04-23 07:40:02
【问题描述】:
假设您有一个包含以下代码行的 ASP.NET 页面:
while (true)
{
byte[BUFFER_SIZE] buffer;
// Fill buffer with pseudo data
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
您还有一个包含以下代码行的上述页面的测试应用程序:
while (readBytes != 0)
{
byte[BUFFER_SIZE] buffer;
readBytes = stream.Read(buffer, 0, buffer.length)
}
我没有读取真正的大文件,而是尝试动态生成随机二进制数据并传输到客户端,它运行良好。然后,我编写了一个客户端,他只从 ASP.NET 页面读取字节,然后什么都不做,只读取下一个字节,直到 ASP.NET 页面关闭连接(下载完成)。我在 ASP.NET 页面中使用了基于时间的设置来确定何时完成下载(这是一个压力测试)。
所以 IIS 7.0 和 ASP.NET 正在做的是在一段时间(即一小时)内流式传输数据。我在这个页面上启动了 100 个并发客户端,平均下载速度为 250 KB/s,持续一小时。大约 45 分钟一切正常,但 IIS 突然在客户端关闭所有连接并显示此错误代码:
无法从传输连接读取数据:连接已关闭。
我猜这是关于通过 IIS 传输大量二进制数据,并且应该在 IIS 7.0 中进行一些配置,这是由我的压力测试触发的,但是是哪个配置。
【问题讨论】:
-
你检查服务器上的事件日志了吗?
-
是的,它只记录请求的详细信息,仅此而已。 IIS 日志记录可能需要一些配置?
标签: asp.net iis-7 stress-testing