Вопрос

Хорошо, плохо или безразлично запускать SQL Server на вашем веб-сервере?

Я использую Server 2008 и SQL Server 2005, но не думаю, что это имеет значение для этого вопроса.

Это было полезно?

Решение

Для небольших сайтов это не имеет особого значения.Однако по мере роста нагрузки это масштабируется очень плохо и быстрее, чем вы думаете:

  • Серверы баз данных создаются исходя из того, что они «владеют» сервером.Они обменивают память на скорость и легко используют всю доступную оперативную память для внутреннего кэширования.
  • Как только ресурсов начинает не хватать, профилирование становится очень трудным — очевидно, что страдают и IIS, и SQL, но менее ясно, где находится узкое место.IIS требует ЦП, SQL Server требует ОЗУ или ЦП и т. д. и т. п.
  • Независимо от того, сколько слоев вы добавляете в свой код, он все работает на одном и том же процессоре, поэтому одноуровневое приложение будет работать лучше в этом контексте — с меньшими издержками — но оно не будет масштабироваться.
  • Безопасность действительно плохая, обычно вы изолируете SQL за брандмауэром!

Если вы можете себе это позволить, вероятно, лучше выложить несколько долларов и приобрести второй сервер, возможно, с использованием PostgreSQL.Один сервер IIS и один PostgreSQL стоят примерно столько же, сколько IIS + SQL Server из-за затрат на лицензирование...

Другие советы

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

Фактически, для небольших приложений вы увидите более высокую производительность на серверной стороне, поскольку данные не должны передаваться по сети.Все дело в масштабе.

Имейте в виду, что серверы баз данных съедают память.Вот один важный урок из школы тяжелых ударов: если вы решите запустить SQL Server 2005 на том же компьютере, что и ваш веб-сервер (и это настройка, которую вы упомянули в своем вопросе), обязательно зайдите в Sql Server Management Studio и сделайте это:

  1. Щелкните правой кнопкой мыши экземпляр сервера и выберите «Свойства».
  2. Выберите «память» из списка слева.
  3. Измените «максимальный объем памяти сервера» на тот, который может поддерживать ваш сервер.

Если вы этого не сделаете, SQL Server в конечном итоге займет всю оперативную память вашего сервера и будет удерживать ее на неопределенный срок.Это приведет к тому, что ваш сервер более или менее выйдет из строя и умрет.Если вы об этом не знаете, это может быть очень расстраивает для устранения неполадок.

Я делал это довольно много раз.Это не то, что вы бы сделали, если бы у вас была инфраструктура крупной корпорации, и она не масштабируется, но для многих вещей это подходит.

На самом деле все зависит от того, сколько работы выполняют ваш веб-сервер и ваш sql-сервер.

Без дополнительной информации я сомневаюсь, что вы получите какие-либо полезные ответы.

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

Не забудьте сделать резервную копию :)

Если ваш веб-сервер общедоступен, это ОЧЕНЬ плохая идея с точки зрения безопасности.

Хотя это усложняет многие вещи, такие как маршрутизация, брандмауэр, порты, аутентификация и т. д.перспектива, разделение это хорошо.Если на веб-сервере работает сервер базы данных, и если ваш веб-сервер скомпрометирован, то и ваш sql-сервер тоже.

Разложив их по отдельным коробкам, вы немного поднимаете планку.

Предстоит еще много работы по обеспечению безопасности вашего веб-сервера И сервера базы данных, но зачем делать это проще, чем нужно?

Это будет зависеть от ожидаемой нагрузки на сервер.Для небольших сайтов это вообще не проблема (при правильной настройке).Для больших сайтов вы можете рассмотреть возможность распределения нагрузки по разным серверам:веб-сервер, файловый сервер, сервер базы данных и т. д.

Я видел эту проблему снова и снова.Правильный ответ — разместить SQL Server на одном компьютере, а IIS (веб-сервер) — на другом.Ваши деньги пойдут на машину SQL Server, потому что для поддержки эффективного сервера необходимо приобрести подходящую систему дисков и оперативную память, но веб-сервер может быть значительно уменьшенной и менее дорогой машиной с только набором зеркальных дисков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top