Запуск SQL Server на веб-сервере - PullRequest
3 голосов
/ 22 сентября 2008

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

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

Ответы [ 7 ]

13 голосов
/ 22 сентября 2008

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

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

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

6 голосов
/ 23 сентября 2008

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

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

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

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

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

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

3 голосов
/ 22 сентября 2008

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

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

2 голосов
/ 22 сентября 2008

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

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

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

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

2 голосов
/ 22 сентября 2008

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

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

1 голос
/ 22 сентября 2008

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

0 голосов
/ 06 ноября 2010

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

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