Я только начинаю возиться с BookSleeve (и redis) в Windows и просто хочу посмотреть, могу ли я получить какое-то направление от того, что я могу делать неправильно здесь. Используя следующий код, а затем запустив ab против него, я могу обслуживать ~ 500 запросов до того, как сработает w3wsvc.exe. Когда я присоединяюсь к процессу для отладки, я вижу, что запрос на сервер redis отключен.BookSleeve Wait() тайм-аут на странице Razor во время бенчмаркинга
@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/wait CTP.
Теперь, для всего лишь одной веб-страницы, это отлично работает. Я просто хотел грохнуть на сервере хостинг это так что я сделал ...
ab -n 1000 -c 5 http://server/page.cshtml
Это будет служить 500-700 запросов, а затем крах. Хотя я не уверен, что когда-либо буду иметь такую нагрузку, я считаю, что это указывает на явную ошибку в моем коде и хотелось бы, чтобы кто-то умнее, чем я указываю, что я делаю неправильно.
Спасибо!