首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基准测试时,剃刀页面中的BookSleeve Wait()超时

基准测试时,剃刀页面中的BookSleeve Wait()超时
EN

Stack Overflow用户
提问于 2011-07-08 01:05:55
回答 1查看 588关注 0票数 1

我刚刚开始在Windows上摆弄BookSleeve (和redis),只是想看看我是否能得到一些方向,看看我在这里可能做错了什么。使用以下代码,然后针对它运行ab,我可以在w3wsvc.exe崩溃之前为大约500个请求提供服务。当我附加到要调试的进程时,我看到对redis服务器的请求正在超时。

代码语言:javascript
复制
@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个请求,然后崩溃。虽然我不确定我是否会有这样的负载,但我相信这表明我的代码中有一个明显的缺陷,并希望有人比我更聪明地指出我做错了什么。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-08 12:21:31

我注意到的第一件事是,代码太复杂了,不能放在剃刀视图中--它需要移动到控制器。但这本身可能不是问题所在。

问题可能是创建了大量连接,在加载下一个连接之前,这些连接可能没有完全清除。从BookSleeve站点:

A连接是线程安全的,并且(除了等待)是非阻塞的,所以你可以根据需要在任意多的调用者之间共享连接-这使得网站可以非常有效地使用单个redis连接。此外,数据库切换(上面示例中的12个)是在消息级别处理的,因此您不需要发出单独的SELECT命令-这允许在一组数据库上使用多租户,而不必同步操作。

这意味着,与创建1000个连接来处理每个查询相比,创建一个共享连接来处理1000个查询可能会获得更好的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6614355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档