Несколько месяцев назад я написал приложение и разместил его в нашем офисе на рабочей станции с Intel Core 2 Quad Q8200 @ 2.33GHz, 8 GB RAM, Windows Server 2008 Enterprise и SQL Server 2008 Enterprise. И веб-сервер, и сервер базы данных работали на одной машине.
У нас был огромный приток трафика, и мы переместили ClubUptime.com, и получили 2 их лучших виртуальных машины Windows. Сервер базы данных работает под управлением Windows 2008 R2 Standard и SQL Server 2008 R2 Web на 8 ГБ оперативной памяти и Intel Xeon e5620 @ 2.40GHz.
С момента переключения база данных, которая раньше занимала около 400 МБ в оперативной памяти, теперь занимает около 4-7 ГБ, и никаких изменений в ней не было (кроме пары столбцов тут и там). Наш трафик увеличился в четыре раза, а наша БД занимает 6 ГБ на диске, зачем SQL-серверу занимать 7 ГБ, если БД занимает всего 6. И зачем ему хранить ВСЮ базу данных в памяти?
Другой вопрос, почему при увеличении размера базы данных в 4 раза ее объем памяти увеличился в 12 раз?
Последний вопрос: Почему процессор теперь застрял на 100%, хотя раньше не застревал? Дизайн простой, ОЧЕНЬ мало соединений, НИКАКИХ подзапросов. Я просто в растерянности, если только это не редакция SQL-сервера или тот факт, что я перешел с реального оборудования на виртуальную машину.
решение1
SQL Server будет использовать столько памяти, сколько сможет, так что я не буду слишком много терять сна из-за объема памяти, если только нет других проблем. Если он может, он сохранит все, оперативная память всегда быстрее диска, и если она не используется ни для чего другого, то почему бы и нет.
Запуск SQL на виртуальной машине может быть проблематичным. Он работает нормально, но при виртуализации производительность падает, и, как многие люди прокомментировали здесь, SQL страдает от этого сильнее, чем большинство других приложений. Многое зависит и от экземпляра вашей виртуальной машины — если гипервизор является хостом VMware vSphere, то он будет работать лучше с эквивалентными реальными ресурсами, чем Xen, если он поддерживается Hyper-V, а уровень конкуренции низок (например, очень, очень мало виртуальных машин на хосте), то он может быть довольно хорош. Единственные системы, которые мне когда-либо приходилось девиртуализировать, были серверами SQL.
Вы не указываете, сколько виртуальных ЦП они вам дают для вашей ВМ, я очень сомневаюсь, что вы получаете все 8 ядер, которые Xeon 5620 может предоставить ВМ. Даже если это так, это может быть неоптимально. В целом ВМ с 4 vCPU на этой платформе должна соответствовать вашей предыдущей физической платформе, предполагая, что Xeon 5620 примерно на 30% лучше по тактовой частоте, чем Core 2 Quad, с которого вы пришли, но так ли это на самом деле, зависит от базового гипервизора, настройки хост-системы и того, насколько велика конкуренция со стороны других ВМ, размещенных на том же гипервизоре.
В общем случае нельзя доверять счетчикам производительности внутри виртуальной машины, или, по крайней мере, нельзя доверять тому, что они говорят вам все. Вам действительно нужно получить представление о производительности с точки зрения гипервизора, чтобы узнать, действительно ли ваша виртуальная машина достигает 100% мощности реальных ЦП в системе.