Я согласен с GBN и Marian.
Чтобы ответить на ваш вопрос о двухпроцессорных системах, обрабатывающих 25 запросов: у меня есть двухпроцессорная система, которая поддерживает около 750 пользовательских подключений и среднее значение 4K пакетных запросов в секунду. Для меня важно несколько вещей: дизайн, управление и настройка. Если вы начнете с плохого дизайна вашего приложения и базы данных, вы потерпите неудачу при загрузке (подумайте о масштабировании).
Высокая загрузка ЦП может указывать на давление памяти. Вы упоминаете, что для SQL Server доступно только 7 ГБ памяти. Если у вас плохо работают индексы (слишком много индексов, неверные индексы или нет индексов), это приведет к тому, что система будет выгружать в память больше базы данных для различных запросов, чем при наличии соответствующих индексов. Я бы предостерег от чрезмерного создания индексов, поскольку неправильные индексы также повредят вам, поскольку каждый из них может потребовать обновления в ходе операции обновления строки (Create-Update-Delete).
Кроме того, использование DMV с отсутствующим индексом требует использования того, что вы знаете о вашем приложении и базе данных, а не просто реализации каждого рекомендованного индекса. Я хотел бы проверить записи в блоге Кимберли Триппа относительно индексов здесь . После раздела «Индекс» рассмотрение других категорий может оказаться полезным для вашей ситуации.
Если обновление Java / Hibernate для 5 таблиц в одной транзакции выполняется через несколько обращений к базе данных, то вы оставляете себя открытым для конкуренции (заблокированные запросы CRUD). Проблема усугубляется, если приложение не может своевременно вернуться в базу данных. Находясь в приложении, связанная активная транзакция может блокировать обработку других запросов и вызывать тайм-ауты запросов.
Добавьте два вышеуказанных вопроса вместе, и у вас начнутся неприятные проблемы с производительностью.
Сокращение числа обращений к базе данных в контексте одной транзакции было бы очень полезно. Возможно, хранимая процедура поможет.
Остальным потребуется работа, чтобы масштабировать приложение. Вы могли бы также рассмотреть вопрос о памяти, но это должно произойти после того, как будет проведен анализ проекта и производительности, и необходимые изменения, внесенные сразу после добавления памяти, замаскируют ваши проблемы.
Абсолютно следуйте предложениям, изложенным Мариан.
Я бы сказал, что вы оказались в прекрасном испытании и желаю вам больших успехов!