Каково типичное среднее количество сеансов ASP.NET на процессор или на память? - PullRequest
10 голосов
/ 18 декабря 2009

(РЕДАКТИРОВАТЬ: переписать вопрос, чтобы сделать его более понятным, значение не изменилось)

Вы можете создать приложение и измерить его использование. Но я хотел бы знать, если вы решите заранее о приложении ASP.NET, сколько одновременных пользователей (сессий) вписывается в одну машину, как правило.

Давайте предположим следующую упрощенную настройку по умолчанию: сеансы Inproc, ASP.NET 3.5, кеширование NHibernate + L2, сайт покупок (свойства корзины в сеансе).

Хотя я мог убедиться, что сессия не поднимется выше, скажем, 20 КБ, мой опыт показывает, что в целом возникают огромные накладные расходы, даже с хорошо продуманными приложениями. Я ищу этот простой расчет, который вы можете сделать на заметке.

Для вознаграждение : какой CPU / Mem вы бы посоветовали своему управлению для каждого X одновременных пользователей, игнорируя требования к пропускной способности. То есть и ответ может быть: на 2 ГГц Xeon с 1 Гб памяти, Win2k8, вы можете безопасно обслуживать 500 одновременных сессий, но, кроме того, это требует тщательного планирования или дополнительного оборудования re

Ответы [ 4 ]

8 голосов
/ 27 декабря 2009

Так как вы ищете фактический #, я предоставлю вам немного. Мы создаем безопасное HR-приложение с использованием ASP.NET MVC. Как и вы, мы хотели получить представление о максимальном количестве одновременных подключений, которое мы определили как максимальное количество страниц, обслуживаемых за 10 секунд (предполагается, что пользователь не будет ждать страницы более 10 секунд).

Поскольку мы искали верхнюю границу, мы использовали очень простую страницу. SSL + несколько переменных сеанса. На двухъядерном процессоре Dual Xeon (всего 8 ядер) с 16 ГБ памяти и SQL Express в качестве бэкэнда мы смогли установить ~ 1000 «одновременных» соединений. Ни память, ни SQL-экспресс не были ограничивающими факторами, это был в первую очередь процессор и ввод-вывод для нашего теста. Обратите внимание, что мы не использовали кеширование, хотя я сомневаюсь, что для корзины покупок вы тоже. Эта страница попала в базу данных ~ 3 раза и отправила ~ 150 КБ данных (в основном изображения png, без кэширования). Мы убедились, что было создано 1000 сессий, хотя каждая была маленькой.

Наше POV в том, что 1000, скорее всего, нереально. Тесты, включающие страницы с бизнес-логикой и реальными пользовательскими данными, показали, что максимум 200 одновременных пользователей. Однако некоторые пользователи также будут запускать отчеты, которые могут жевать все ядро ​​в течение 30 секунд. В этом сценарии 9 одновременных отчетов пользователи могут сделать систему непригодной для других. Это относится к другим постерам ... вы можете получить другие показатели производительности, сколько хотите, но ваша система может вести себя совершенно иначе, в зависимости от того, что она делает.

8 голосов
/ 18 декабря 2009

знаете ли вы "качество" кода?

плохой код может стоить огромного количества оборудования, в то время как хороший код может ничего не стоить

Обновление на основе комментария

Несколько лет назад я должен был поддерживать плохие приложения, они использовали 500 мегабайт оперативной памяти (иногда 1,5 гигабайта) и требовали минут, чтобы показать материал, мне пришлось переписать все это, и после этого это было взяв необходимый объем памяти (примерно в 10-15 раз меньше), и он быстро показал все, я говорю здесь за миллисекунду.

Количество зацикленных и плохо кэшируемых данных в памяти, которые были сделаны неправильно, было ... невероятно грустным. Просто скажу вам, что у меня в памяти было 3 версии целой базы данных о бешенстве (то есть 4 с реальным БД), и код должен был обновлять все версии одну за другой. Все остальное в приложениях основано на версиях в памяти.

Во всяком случае, в конце. Я удалил 25 тысяч строк кода.

Качество кода IS важно.

второе обновление

нашел это, может быть хорошо

третье обновление

В приложении, которое я сейчас разрабатываю, asp.net 3.5 использует linq to sql, общаясь (конечно) с sql server 2005. многие читают в БД и не так много пишут.

на моей собственной машине разработчика, которая является старым p4 prescott с 3 гигабайтами оперативной памяти. загрузка всей страницы занимает в среднем от 20 до 100 мс, в зависимости от того, какая страница: -)

сеанс (использование памяти) очень низкий, наверняка ниже 20k

если я уйду отсюда, моя плохая математика будет;

Если бы у меня было 100 одновременных пользователей, для загрузки страницы потребовалось бы около 2 сек, а для продолжительности сеанса потребовалось бы не менее 2 мегабайт оперативной памяти.

нужна плохая математика ? что вам нужно для 1 пользователя и для этого просто умножьте 1 пользователя на WhatYouThinkYouShouldBeAbleToHandle

Я не думаю, что есть другой способ узнать. Потому что опять код под страницей имеет значение.

2 голосов
/ 24 декабря 2009

Вы, очевидно, понимаете, что это зависит от приложения, и лучший способ понять, что приложение может сделать или поддержать, - это измерить его. В прошлом я использовал методологию анализа транзакционных издержек Microsoft, чтобы получить довольно хорошие оценки. Я использовал его в свое время с Site Server Commerce Edition 3.0 и сегодня с современными приложениями ASP.net, и он работает довольно хорошо.

Эта ссылка является фрагментом из книги «Повышение производительности и масштабируемости приложений .Net» от Microsoft и содержит подробные формулы, которые можно использовать с данными о производительности (загрузка ЦП, счетчик IIS и т. Д. ) рассчитать количество пользователей, которых вы можете поддержать на своем сайте. Я не смог опубликовать вторую ссылку на книгу, но если вы поищете файл scalenet.pdf в Google / Bing, вы найдете его. Надеюсь, это поможет

1 голос
/ 18 декабря 2009

Это сильно зависит от того, сколько работы вы выполняете на сервере. Некоторые приложения могут делать 100, другие только 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...