gpt4 book ai didi

asp.net - 基准测试时 Razor 页面中的 BookSleeve Wait() 超时

转载 作者:IT王子 更新时间:2023-10-29 06:12:22 24 4
gpt4 key购买 nike

我刚刚开始弄乱 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 <a href="http://server/page.cshtml" rel="noreferrer noopener nofollow">http://server/page.cshtml</a>

它将处理 500-700 个请求,然后崩溃。虽然我不确定我是否会遇到这种负载,但我相信这表明我的代码中存在明显的缺陷,并且希望有人比我更聪明地指出我做错了什么。

谢谢!

最佳答案

我注意到的第一件事是该代码太复杂而无法进入 Razor View - 它需要移动到 Controller 。不过,这本身可能不是问题所在。

问题可能是正在创建的大量连接在加载下一个连接之前可能没有完全清除。来自 BookSleeve 网站:

A connection is thread-safe and (with the exception of Wait) non-blocking, so you can share the connection between as many callers as you need - this allows a web-site to make very effective use of just a single redis connection. Additionally, database-switching (the 12 in the examples above) is handled at the message level, so you don't need to issue separate SELECT commands - this allows multi-tenancy usage over a set of databases without having to synchronize operations.

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

关于asp.net - 基准测试时 Razor 页面中的 BookSleeve Wait() 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6614355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com