我刚刚开始在 Windows 上使用 BookSleeve(和 redis),只是想看看我是否可以就我在这里可能做错的事情获得一些指导。使用以下代码,然后针对它运行 ab,我可以在 w3wsvc.exe 崩溃之前处理大约 500 个请求。当我附加到进程进行调试时,我看到对 redis 服务器的请求正在超时。
@using (var conn = new BookSleeve.RedisConnection("localhost"))
{
conn.Open();
var catgrabber = conn.ListRange(0,"categories",0,-1);
byte[][] categories = conn.Wait(catgrabber);
foreach (byte[] category in categories)
{
<h3> @System.Text.UTF8Encoding.UTF8.GetString(category) </h3>
var actgrabber = conn.ListRange(0, String.Format("activity:{0}",
System.Text.UTF8Encoding.UTF8.GetString(category).Replace(' ', '_')), 0, - 1);
byte[][] activities = conn.Wait(actgrabber);
foreach (byte[] activity in activities)
{
<label for="@System.Text.UTF8Encoding.UTF8.GetString(category).Replace(' ', '_'):@System.Text.UTF8Encoding.UTF8.GetString(activity):12345">
<input type="checkbox" id="@System.Text.UTF8Encoding.UTF8.GetString(category).Replace(' ', '_'):@System.Text.UTF8Encoding.UTF8.GetString(activity):12345" value="@System.Text.UTF8Encoding.UTF8.GetString(activity)"/>
@System.Text.UTF8Encoding.UTF8.GetString(activity)
</label><br />
}
}
}
我还没有安装 .NET async/await CTP。
现在,只需点击一个网页就可以了,效果很好。我只是想在托管这个的服务器上猛击,所以我做了......
ab -n 1000 -c 5 http://server/page.cshtml
它将处理 500-700 个请求,然后崩溃。虽然我不确定我是否会承受这种负载,但我相信这表明我的代码存在明显缺陷,并且希望有人比我更聪明地指出我做错了什么。
谢谢!