Я только начинаю бездельничать с BookSleeve (и redis) в Windows и просто хотел посмотреть, смогу ли я получить некоторое представление о том, что я могу делать здесь не так. Используя следующий код, а затем запустив ab против него, я могу обработать ~ 500 запросов до сбоев w3wsvc.exe. Когда я присоединяюсь к процессу для отладки, я вижу, что время запроса к серверу 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="nofollow">http://server/page.cshtml</a>
Он будет обслуживать 500-700 запросов, а затем падать. Хотя я не уверен, что у меня когда-либо будет такая нагрузка, я считаю, что это указывает на явный недостаток в моем коде, и хотел бы, чтобы кто-то умнее, чем я, указал на то, что я делаю неправильно.
Спасибо!