Недавно количество моих пользователей увеличилось, и мой текущий сервер начал становиться недостаточным. Я думаю о покупке 4 x 8 = 32-ядерных процессоров AMD с использованием выделенного сервера. Интересно, насколько хорошо ASP.NET 4.0 и MS SQL 2008 Web Server справляются с многопоточностью.
Могут ли они использовать 32 ядра при 100% мощности, или я должен купить максимум 24 ядра или 16 ядер?
(Этот компьютер будет работать под управлением Windows Server 2008 Standard Edition.)
Ответ - технически 100% -ная мощность - это мечта из-за накладных расходов на управление большим объемом работы, но MS SQL Server 2008 неплохо справляется с горизонтальным масштабированием ядер / процессоров ... Вот диаграмма возможностей: http://msdn.microsoft.com/en-us/library/ms143760.aspx
Рискну предположить, что вы будете преследовать узкие места при наращивании одной системы типа большой коробки, и вполне возможно, что добавления ЦП могут вообще ничего не делать, если ваше текущее узкое место - это память или io-накопители.
Деньги, потраченные на процессор (и соответствующие затраты на лицензию SQL), вероятно, будут лучше обслужены, если сначала потратить их на максимальное использование всей доступной памяти. Затем посмотрите на более быстрые диски (возможно, SSD?). Очевидно, убедитесь, что любые сетевые проблемы решены, если они еще не рассмотрены. Но самое главное - это код / дизайн. Время, потраченное на оптимизацию существующего кода, скорее всего, принесет вам максимальную выгоду.
Однако моя главная рекомендация - потратьте сравнительно небольшую сумму денег на аудит у специалиста по SQL. Позвольте им кратко рассказать вам, как лучше всего решить вашу проблему.
Удачи!
Я подозреваю, что при такой скорости работы другие части системы начнут стонать. Эта проблема может быть решена более экономично, если использовать ферму серверов, а не одного зверя.
Можете ли вы предоставить дополнительную информацию о количестве запросов, которые вы получите за час или день? Какое оборудование у вас сейчас? Где сейчас горлышко бутылки? Это процессор или ввод-вывод?
ASP.NET может использовать все ядра. MS SQL 2008 может использовать все ядра и любой объем памяти, который вы ему позволяете.
Проблема не в программном обеспечении сервера, а всегда в коде, который вы пишете (это ваше приложение ASP.NET), и в том, как вы спроектировали свою базу данных (как логическую, так и в физическую базу данных), а также в написанных вами запросах и т. Д.
По опыту оптимизации крупных веб-сайтов, являющихся общественным достоянием, я могу сказать вам, что ваш веб-сервер не там, где все замедляется. Обычно это связано с тем, как разрабатывается и кодируется приложение, а также с тем, как была спроектирована база данных.
Вам следует собрать много данных об использовании вашего текущего оборудования и профилировать ваше приложение asp.net и базу данных, чтобы увидеть, что вызывает стресс.
Как только вы узнаете, что вызывает стресс, решение может заключаться в том, что вам нужно немного очистить свой код / базу данных.