私は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 /awaitCTPをまだインストールしていません。
さて、たった1つのWebページがヒットしただけで、これはうまく機能します。私はこれをホストしているサーバーを強打したかったので...
ab -n 1000 -c 5 http://server/page.cshtml
500〜700のリクエストを処理してから、クラッシュします。この種の負荷がかかるかどうかはわかりませんが、これは私のコードに明らかな欠陥があることを示していると思います。私が間違っていることを指摘するよりも賢い人が欲しいと思います。
ありがとう!