Наш сайт, разработанный в ASP.NET, ожидает, что 1000 одновременных пользователей и его производительность снижается, увеличивая количество списков в БД. Какое кэширование (например, NCache или Appfabric) будет лучшим, чтобы уменьшить нагрузку на БД и повысить производительность для более одновременных пользователей. Пожалуйста, дайте мне несколько предложений.Кэширование приложений ASP .NET
ответ
Если у вас несколько серверов, чем система кэширования Appfabric, это поможет. В построении системы кэширования asp.net также хорошо, если они будут использоваться для одного сервера. Одним из наиболее важных факторов будет размер оперативной памяти, который у вас будет. Если вы собираетесь добавлять все больше ОЗУ, ваш сайт будет быстрее и быстрее. Также можно использовать memcache Is there a port of memcache to .Net?. Даже если вы видите сайт как переполнение стека, у них на сервере базы данных имеется около 380 ГБ ОЗУ, что ускоряет его. Даже SQL-серверы предназначены для хранения данных в ОЗУ для быстрого доступа.
Прежде чем использовать распределенный кеш, сначала проверьте эффективность своего веб-сайта. Я видел слишком много ошибок в прошлом, когда люди абсолютно хотят применить что-то, что будет бесполезно для них.
Ваш сайт становится медленным с 1000 одновременных пользователей? Хорошо, это довольно нормально: небольшие веб-сайты не являются архитектурными, как крупные веб-сайты. Но давайте посмотрим, почему (неупорядоченный список):
- Просто, что медленно? страницу, весь веб-сайт?
- Сеть: ваша сетевая инфраструктура оптимальна?
- DB: Ваша база данных перегружена? Могут ли ваши Queres быть оптимизированы?
- MVC: Вы используете Async? Сессии? Как насчет веб-Api?
- Веб: Что относительно производительности сети? (CDN, скрипты, CSS, количество запросов, ...)
Для обнаружения как можно быстрее узких мест в вашей системе существует два пути: тестирование нагрузки и контроль производственной системы.
За этим стоит задача ScaleIn Vs ScaleOut. Я не говорю, что распределенный кеш - не самое подходящее решение для вас: я просто говорю, что простейший!
Я настоятельно рекомендую вам взглянуть на NCache для вашего приложения ASP.NET. NCache
очень многофункциональный распределенный кэш для приложений .NET и гораздо более мощного
чем App Fabric.
Вы можете использовать NCache для кэширования данных приложений, хранения состояния сеанса ASP.NET и совместного использования данных во время выполнения.
Об использовании действия GET: outputcache/
если вы используете на сохранения в БД
EF => Configuration.AutoDetectChangesEnabled = false;
Большинство проблем в плохо оптимизированного кода.