Увеличение памяти на сервере
Когда вы приобретаете сервер VPS с 256MB или 512MB оперативной памяти на борту и лишь часть мощности процессора, то использовать для таких сервисов как MySQL/PHP/Apache настройки по умолчанию является очень плохой идеей. В настоящее время у меня запущено 3 сайта на самом дешевом тарифном плане с 512MB RAM/1 CPU. Не уверен полностью, но посещаемость составляет порядка 5-10 тысяч посетителей в день. Далее я хочу поделиться инструкцией как оптимизировать LAMP используя всего лишь 512 MB и при этом не уходя в swap. Обычно при такой настройки используется 256 – 378Mb памяти и все работает довольно быстро.
Определяем доступную память и активность swap.
Перед началом оптимизации давайте взглянем на количество используемой памяти. Для этого необходимо выполнить следующую команду:
Для того. чтобы посмотреть список запущенных процессов и отсортировать их по использованию памяти, необходимо выполнить вот такую команду:
Настраиваем LAMP сервер для потребления малого количества оперативной памяти. Останавливаем, отключаем ненужные сервисы
Первый и очевидный вопрос, который необходимо задать — это «какие сервисы мне не нужны в использовании?». Недавно, я обнаружил очень удобную утилиту для управления сервисами. Она называется "sysv-rc-conf" и управляет сервисами при помощи псевдографики и флажками. Выгдялит вот так:
Здесь представлен список сервисов, которые я изменил.
Не запускайте X-сервер, выключите все ненужные сервисы и настройте Apache, MySQL, PHP только с базовой необходимой функциональностью.
Apache
Самая большая проблема Apache — это объем оперативной памяти, который он использует. Я буду рассматривать следующие способы ускорения работы и снижения потребления оперативной памяти:
- Обрабатывать меньшее количество одновременных запросов;
- Меньшая загрузка модулей(отключить неиспользуемые);
- Меньше журналирования.
Настроить Apache на использование только наименьшего количество запущенных дочерних процессов
Prefork — это где случается настоящая магия. Это то, где мы говорим Apache генерировать много процессов. По умолчанию выделяется большое количество, что и приводит к потреблению оперативной памяти сервера. Убедитесь, что apache2.conf не настроен для запуска слишком большого количества серверов или имеет множество запасных. Ниже пример:
Также обязательно отрегулируйте параметр "KeepAliveTimeout", установив значение 10 или 15. На мой взгляд, 15 секунд слишком много, чем маленькой странице требуется для просмотра и короче, чем требуется для длительного просмотра страницы.
Загружайте только самые необходимые модули
Настроенный по умолчанию веб-сервер Apache подгружает слишком много ненужных модулей. Проверить какие модули установлены и включены можно следующей командой:
Ниже представлен список модулей, которые необходимы для работы Wordpress.
Вам необходимо закомментировать остальные модули для экономии памяти. Или же вы можете включить/отключить модули через командную строку. Для включения воспользуйтесь командой:
После проделанных манипуляций вам необходимо обязательно перезагрузить веб-сервер Apache:
Уменьшаем журналирование
Меня устраивают такие настройки, ну а вы сами решайте.
Оптимизация MySQL сервера
Тонкая настройка MySQL для использования малого количества оперативной памяти довольно проста.
Далее мы будем рассматривать следующие типы настроек MySQL:
- Вещи, которые мы можем отключить;
- Оптимизация параметров MySQL сервера;
- Сторонние инструменты настройки конфигурации MySQL.
Для оптимизации MySQL нам необходимо отредактировать файл /etc/mysql/my.cnf.
Вещи, которые нам необходимо выключить
- MyISAM предлагает блокировки на уровне таблиц, это значит, что когда информация записывается в таблицу, то вся таблица блокируется и если в этот момент будут еще записи, которые должны выполнится одновременно в ту же таблицу, то они должны будут подождать, пока первая запись добавиться успешно;
- InnoDB, с другой стороны предлагает блокировки на уровне строк, это значит, что когда происходит запись в строку, то только эта единичная строка блокируется; остальные же доступны для записи.
Проблемы блокировок табличного уровня заметны только на очень нагруженных серверах. Для обычных же веб-сайтов, MyISAM показывает лучшую производительность на дешевых серверах.
Если вы решили использовать MyISAM таблицы, то вам необходимо добавить следующие строки в конфигурационный файл my.cnf:
Если у вас будут только MyISAM таблицы, вы можете отключить InnoDB движок, тем самым сэкономив оперативную память, добавив лишь одну строку в my.cnf:
Если вы в прошлом использовали InnoDB, то ниже я предоставляю вам скрипт, который автоматически переконвертирует все таблицы InnoDB в MyISAM.
Оптимизируем параметры MySQL сервера
Ниже представлены несколько параметров, которые могут быть отрегулированы с целью ускорения MySQL сервера.
Key buffer size
Это один из самых важных параметров, влияющий на потребление оперативной памяти и производительности, который необходимо оптимизировать. MySQL пытается положить все, что проиндексировано в key buffer, поэтому этот параметр приносит огромную производительность. SQL-запрос будет подан непосредственно из оперативной памяти RAM. Я не могу сказать, какой размер вы должны установить для key buffer, потому что только вы знаете, сколько RAM имеется у вас свободной.
The Query Cache
Если вы делаете одинаковые запросы два раза подряд, то результат помещается в кэш запросов, таким образом mysql не придется делать запрос снова. Если вы собираетесь повышать производительность, то этот параметр может принести огромную пользу, но возрастет потребление памяти. Поэтому вам необходимо установить этот параметр не слишком огромным, но и не слишком маленьким, то есть столько, сколько необходимо вашему веб-сайту.
Ниже приведены три переменные, которые влияют на то, как работает ваш кэш запросов:
Maximum Number of Connections
Это опциональный параметр. Если вы уже ограничили количество процессов apache, то все уже хорошо. Если нет, и вам необходимо обрабатывать тысячи пользователей одновременно, необходимо увеличить значение этого параметра.
The table Cache
Каждый раз вы обращаетесь к таблице, MySQL подгружает ссылку на таблицу как одну запись в кэш таблицы. Это делается для каждого параллельного доступа к таблице, это действительно важно для производительности, незначительно для использования памяти. Вы можете постоянно увеличивать кэш таблицы, но тогда лы упретесь в лимит на количество открытых файлов в вашей операционной системе, так что имейте это в виду. Если установлен слишком маленький кэш таблицы, то mysql будет блевать на вас, вы же не хотите этого.
Ниже приведен корректный my.cnf, который я оптимизировал на моем VPS с самым низким тарифным планом.
Сторонние мастера настройки MySQL
Я нашел Percona, которая предоставляет бесплатную настройку MySQL и помогает выбрать самые лучше возможности MySQL сервера для достижения лучшей производительности, а также сэкономить время, избежать сложных моментов и рисков, которые могут возникнуть при самостоятельной настройке my.cnf.
Мониторинг MySQL сервера
MySQL хранит статистику, которая помогает определить самые лучшие значения для использования. Кроме этого, имеются две удобные утилиты, которые можно использовать для чтения этой статистики и выводить в понятном формате: tuning-primer.sh and mysqltuner.pl.
Эти скрипты позволят мониторить ваш MySQL сервер, и после предоставят подсказку о параметрах, которые необходимо настроить на вашем сервере.
Оптимизация PHP и кэширование
PHP не очень интенсивно использует память, поэтому я не думаю, что нужно сильно беспокоится о потреблении памяти этим процессов, если ваше приложение не нуждается в этом, но даже в случае необходимости оптимизации, значительно уменьшения потребляемой памяти не будет. Но я исследовал и потом нашел несколько настроек для PHP конфигурации, которые уменьшают потребления памяти веб-сервером.
Alternative PHP Cache
Установите PHP Cache, например, такой как, Alternative PHP Cache. PHP cache будет хранить скомпилированные PHP скрипты таким образом, что они будут заново использованы без компиляции и, соответственно, не создадут нагрузку:
Ниже мой сконфигурированный php.ini файл.
Static Cache
Заключение
Я выложил в открытый доступ конфигурацию моего веб-сервера, чтобы доказать, что можно добиться высокой производительности даже от самого дешевого VPS контейнера с 512МБ RAM и 1Ghz CPU. Использую я Ubuntu 12.04 LTS, LAMP, Varnish,APC Cache для размещения 3-х веб-сайтов, сделанных на Wordpress (не мультисайтовых) с посещаемостью 10к в день. Давайте взглянем на результаты тестов от Blitz.io:
Как видите, 0,23% пользователей получают Connection Timeout, когда мой веб-сайт имеет 42,735,587 хитов в день (WOW), может можно еще что-то оптимизировать, но я получаю удовольствие от работы моего веб-сервера. Если ты устал от этого руководства или не хочешь делать руками, то можешь воспользоваться такими сервисами, как PuPHPet или Vagrant.
Измените объем памяти (в мегабайтах) для процесса SQL Server, используемого экземпляром SQL Server. Существует два параметра использовании серверной памяти: Мин. память сервера и Макс. память сервера. Эти параметры меняют объем памяти, выделяемой диспетчером SQL Server Memory Manager процессам SQL Server.
Параметры по умолчанию и минимальное допустимое значение для этих параметров
Параметр | По умолчанию | Минимально допустимое |
---|---|---|
min server memory | 0 | 0 |
max server memory | 2 147 483 647 мегабайт (МБ) | 128 МБ |
По умолчанию SQL Server может динамически изменять требования к памяти в зависимости от доступных системных ресурсов. Дополнительные сведения см. в разделе Управление динамической памятью.
Если вы зададите слишком высокое значение макс. памяти сервера одному экземпляру SQL Server, возможно, придется конкурировать с другими экземплярами SQL Server, размещенными на том же узле, за память. Если же задать слишком низкое значение, может возникнуть значительный дефицит памяти или проблемы с производительностью. Если присвоить параметру Макс. памяти сервера минимальное значение, SQL Server может не запуститься. Если не удается запустить SQL Server после изменения этого параметра, запустите его с использованием параметра запуска -f и верните параметр max server memory к предыдущему значению. Дополнительные сведения см. в разделе Параметры запуска службы Database Engine.
SQL Server может использовать память динамически; но можно установить параметры памяти вручную и ограничить объем памяти, доступный для SQL Server. Перед настройкой объема памяти для SQL Server определите подходящее значение путем вычитания из общего объема физической памяти того объема, который требуется операционной системе, выделениям памяти, не управляемым параметром max_server_memory, и другим экземплярам SQL Server (и для других нужд, если компьютер не выделен полностью под сервер SQL Server). Разница — максимальный объем памяти, который можно выделить текущему экземпляру SQL Server.
Несколько экземпляров SQL Server
При выполнении нескольких экземпляров компонента Компонент Database Engineсуществует три подхода к управлению памятью.
Используйте параметр Макс. памяти сервера, чтобы управлять использованием памяти, как указано выше. Установите максимальные значения для каждого экземпляра, учитывая, что их сумма не должна превышать общий объем физической памяти, установленной на компьютере. Рекомендуется выделять каждому экземпляру объем памяти, пропорциональный его ожидаемой рабочей нагрузке или размеру базы данных. Данный подход имеет то преимущество, что свободная память доступна новым процессам или экземплярам сразу же после их запуска. Недостаток состоит в том, что, когда выполняются не все экземпляры, ни один из выполняющихся экземпляров не сможет использовать память, оставшуюся свободной.
Используйте параметр Мин. памяти сервера, чтобы управлять использованием памяти, как указано выше. Установите минимальные значения для каждого экземпляра так, чтобы их сумма была на 1-2 ГБ меньше общего объема физической памяти, установленной на компьютере. Рекомендуется выделять каждому экземпляру минимальный объем памяти, пропорциональный его ожидаемой рабочей нагрузке. Данный подход имеет то преимущество, что выполняющиеся экземпляры могут использовать оставшуюся свободную память в случае, когда выполняются не все экземпляры. Данный подход также полезен, когда на компьютере выполняется другой процесс, интенсивно потребляющий память, так как при этом обеспечивается удовлетворение как минимум заданных потребностей сервера SQL Server в памяти. Недостаток состоит в том, что при запуске нового экземпляра (или любого другого процесса) уже выполняющимся экземплярам требуется некоторое время для освобождения памяти, особенно если для этого им необходимо записать измененные страницы обратно в базу данных.
Отсутствие действий (не рекомендуется). Первый экземпляр, столкнувшийся с рабочей нагрузкой, попытается захватить всю память. Простаивающие экземпляры или экземпляры, запущенные позже других, могут в конечном итоге быть вынуждены работать лишь с минимальным доступным объемом памяти. SQL Server не пытается равномерно распределять возможности использования памяти между экземплярами. Тем не менее все экземпляры будут реагировать на сигналы уведомлений памяти Windows, корректируя объемы используемой ими памяти. Операционная система Windows не балансирует память между приложениями с помощью уведомлений памяти API-интерфейса. Эти уведомления лишь обеспечивают глобальную обратную связь относительно доступности памяти в системе.
Эти настройки можно изменять без перезапуска экземпляров, поэтому можно легко экспериментировать с целью нахождения наиболее подходящих настроек для данной модели использования.
Решение проблемы
Ниже приведены действия, которые могут помочь устранить проблему. Желательно применять их в совокупности.
Оптимизация сайта
Удаление ненужных расширений и плагинов сайтов. Удаление ресурсоёмких плагинов.
Оптимизация Mysql
Для тестирования Mysql рекомендуем воспользоваться скриптом Mysqltuner.
Также, оптимизация Mysql возможна в рамках услуги «Администрирование сервера».
Выделение максимального объема памяти
Для всех выпусков SQL Server память можно выделять вплоть до предела виртуального адресного пространства процесса. Дополнительные сведения см. в разделе Предельный объем памяти для выпусков Windows и Windows Server.
Пример A. Задание параметра max server memory равным 4 ГБ.
В следующем примере параметр max server memory устанавливается равным 4 ГБ. Обратите внимание, что, несмотря на то что sp_configure указывает имя параметра как max server memory (MB) , в примере демонстрируется пропуск (MB) .
При этом будет выведена инструкция, похожая на следующую:
Параметр конфигурации "max server memory" (в МБ) изменился с 2147483647 на 4096. Выполните инструкцию RECONFIGURE для установки.
Включение блокировки страниц в памяти
Включение параметра "Блокировка страниц в памяти"
В меню Пуск выберите команду Выполнить. В окне Открыть введите gpedit.msc.
Откроется диалоговое окно Групповая политика .
В консоли Групповая политика разверните узел Конфигурация компьютера, затем узел Конфигурация Windows.
Разверните узлы Настройки безопасности и Локальные политики.
Выберите папку Назначение прав пользователя .
Политики будут показаны на панели подробностей.
На этой панели дважды щелкните параметр Блокировка страниц в памяти.
В диалоговом окне Параметр политики локальной защиты добавьте учетную запись с правами запуска sqlservr.exe (стартовая учетная запись SQL Server).
Пример В. Определение значения параметра "max server memory" (в МБ).
Следующий запрос возвращает сведения о настроенном сейчас значении и значении, которое используется в SQL Server. Этот запрос возвратит результаты независимо от того, имеет ли параметр "show advanced options" значение true.
ПРИМЕНЯЕТСЯ К: 2013 2016 2019 по подписке SharePoint в Microsoft 365
Имя правила: "Текущему серверу не хватает памяти".
Сводка: Это правило выполняется только на серверах, на которые распространяется служба распределенного кэша. Правило проверяет, превышает ли использование памяти предопределенный порог на сервере, на котором размещена служба распределенного кэша. Если общий объем использования памяти сервера составляет 85% или выше, он запускает оповещение.
Причина. SharePoint Server выделяет службе распределенного кэша 10 % физической памяти сервера. Служба распределенного кэша использует одну половину этой памяти для хранения своих данных, а вторую для служебных данных, связанных с управлением памятью. При увеличении объема кэшированных данных служба распределенного кэша использует все 10 % выделенной памяти.
Решение: проверьте использование памяти на сервере и освободите ее, увеличьте объем памяти ОЗУ на сервере, выделите службе распределенного кэша больше памяти.
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы.
Проверьте использование памяти в SharePoint Server с помощью диспетчера ресурсов.
Увеличьте объем памяти ОЗУ на сервере.
Выделите для службы распределенного кэша больше памяти.
При добавлении физической памяти для сервера служба распределенного кэша не выполняет автоматический пересчет выделенных 10 % памяти, поэтому необходимо вручную выделить службе распределенного кэша больше памяти.
Определите общий объем физической памяти на сервере, на котором размещена служба распределенного кэша. Например, если на сервере доступно 16 ГБ ОЗУ, 2 ГБ памяти резервируется для других процессов и служб, работающих на узле кэша. Таким образом, 16 ГБ – 2 ГБ = 14 ГБ. Эта оставшаяся память выделяется для службы распределенного кэша.
Возьмем половину оставшейся памяти и преобразуем это значение в мегабайты. Например, 14 ГБ/2 = 7 ГБ, или 7168 МБ. Это объем кэша службы распределенного кэша.
Используйте следующую процедуру для изменения объема выделенной памяти.
Изменение объема выделенной памяти для службы распределенного кэша
- (Необязательно) Чтобы проверить текущее выделение памяти для службы или сервера распределенного кэша, выполните в командной строке Командная консоль SharePoint следующую команду:
ComputerName это имя компьютера для сервера, на котором выполняется командлет Командная консоль SharePoint.
- Чтобы изменить размер кэша для службы распределенного кэша, выполните в командной строке Командная консоль SharePoint следующую команду по одному разу на каждом узле размещения кэша:
CacheSize это выделенный объем кэша в мегабайтах. В предыдущем примере для сервера с общим объемом памяти 16 ГБ было вычислено значение объема кэша 7168 МБ.
Если на вашем сервере наблюдается нехватка оперативной памяти, часть процессов завершаются в аварийном режиме.
Как правило, в системном журнале /var/log/messages при этом присутствуют подобные записи:
Одни из причин возникновения проблемы:
- ваш сайт стал более популярным, количество посещений увеличилось;
- на ваши сайты проводится атака по подбору паролей;
- были установлены ресурсоёмкие плагины;
- было установлено дополнительное ресурсоёмкое ПО.
Закажите услугу «Сервер для бизнеса»
Примеры
Включение кэша сайта
Особенно актуально для Bitrix, однако будьте осторожны, кэш Bitrix может быстро разрастись и занять много места на диске.
Защитите админку сайта
Очень часто причиной нехватки ОЗУ является brute-force атака на админку сайта. В этом случае злоумышленники пытаются взломать админку сайта простым подбором паролей. Это характеризуется большим количеством запросов в журналах сайтов (Как просмотреть журналы сайтов? ), например, таких:
В данном примере видно, что атакуют админку WordPress. Для других CMS примеры аналогичны, меняется только URL админки.
Для снижения нагрузки на CPU и защиты вашего сайта установите дополнительную форму аутентификации на админку сайта:
Пример Б. Определение текущего распределения памяти
Следующий запрос возвращает информацию о текущем распределении памяти.
Повышение тарифного плана
Если проблемы все еще остались, рекомендуем перейти на более высокий тарифный план: Как повысить тариф VPS
Качество и надежность DRAM сейчас важнее, чем когда-либо, в основном из-за растущего использования виртуализации серверов. Конечно, стоит отметить что модули RAM, по мнению многих IT-специалистов, являются одними из самых надёжных элементов сервера и выходят из строя последними. Виртуализация имеет много преимуществ, но она значительно увеличивает количество необходимой памяти в сервере для обеспечения оптимальной производительности максимального числа виртуальных машин. По данным HP за 5 лет с 2007 до 2011 средняя память, установленная на всех серверах HP ProLiant, выросла более чем на 500% — от 4 ГБ до более чем 30 ГБ на сервер.
В настоящее время как облачный провайдер мы используем blade-серверы HP ProLiant BL460c Gen8 на шасси HPE BLADESYSTEM C7000 ENCLOSURE. Полностью QuickSpecs тут, обозначим лишь спецификацию RAM.
Standard (Preconfigured Models)
64GB (8 x 8GB) DDR3 1600MHz RDIMMs at 1.5V
64GB (4 x 16GB) DDR3 1866MHz RDIMMs at 1.5V
32GB (4 x 8GB) DDR3 1600MHz RDIMMs at 1.5V
32GB (2 x 16GB) DDR3 1866MHz RDIMMs at 1.5V
32GB (4 x 8GB) DDR3 1333MHz RDIMMs at 1.35V
32GB (2 x 16GB) DDR3 1600MHz RDIMMs at 1.35V
16GB (2 x 8GB) DDR3 1866MHz RDIMMs at 1.5V
16GB (4 x 4GB) DDR3 1333MHz RDIMMs at 1.35V
16GB (2 x 8GB) DDR3 1600MHz RDIMMs at 1.35V
Maximum
(LRDIMM) 512GB (16 x 32GB) up to 1333MHz at 1.35V
(RDIMM) 256GB (16 x 16GB) up to 1866MHz at 1.5V
(RDIMM) 384GB (16 x 24GB) up to 1333MHz at 1.35V
(UDIMM) 128GB (16 x 8GB) up to 1600MHz at 1.5v
Если требуется помощь, чтобы разобраться в обозначениях типов памяти и их различиях, рекомендуем полезную статью на Хабре.
Отметим, что в случае с использованием в оборудовании для облака, то есть в системах, требующих масштабируемости и отказоустойчивости в ущерб дешевизне, используется регистровая память c функцией коррекции ошибок (ECC RDIMM).
Чтобы повысить производительность нашей облачной среды в соответствии с растущими потребностями клиентов, мы приняли решение увеличить количество оперативной памяти в серверах до максимально возможных значений. Возник закономерный вопрос какую именно память купить? Начать подбор логично было со знакомства с предложением производителя сервера, что и было сделано.
В поисках лаконичного ответа был найден White paper от HP, точнее даже два, один 2011 года, а второй 2017. Что мы выделили для себя:
- HP не является производителем модулей RAM.
- Когда вы видите бренд HP Qualified Memory, это означает, что DRAM прошла серьёзную проверку качества и тестирование с используем проприетарных диагностических инструментов и специализированных диагностических тестов, чтобы обеспечить высокий уровень производительности и доступности серверов HP ProLiant.
HP-validated memory is tested so that it does not get too hot and forget your data. HP-validated memory is tested so that it does not cause the system to shut-down due to power overload.
Почему для сравнения мы выбрали оперативную память от Kingston?
- Каждый серверный модуль Kingston для конкретной системы должен пройти испытания на принудительный отказ. Эта уникальная процедура позволяет отбраковывать потенциально дефектные модули, не допуская их попадания в отгружаемые партии продукции. В том числе, присутствует проверка надёжности при разогреве. Полный список проверок качества здесь.
- Являясь долговременным членом Совета директоров JEDEC, Kingston Technology способствует созданию отраслевых стандартов для технологий изготовления памяти. Все модули памяти, выпускаемые компанией Kingston, отвечают требованиям JEDEC и основным техническим условиям, применяемым ведущими изготовителями полупроводниковых устройств.
- Техническая поддержка и тест-драйв. Есть официальное представительство в РФ (в отличии от Crucial, например), по запросу всегда есть необходимое количество плашек для отгрузки. Серверную память можно взять на тест-драйв и посмотреть, как она будет работать в реальных условиях на конкретном сервере.
- «Пожизненная» гарантия. Если модуль памяти откажет, его заменят по гарантии.
Что дала нам покупка модулей памяти Kingston? При значительном объёме закупки удалось серьёзно сократить бюджет на модернизацию. Нам не удалось выявить значимых отличий в проверке качества RAM от Kingston и HP. Не найдя оснований для того, чтобы оплатить почти в два раза больший счёт, мы выбрали модули Kingston. Это также позволило не перекладывать дополнительные издержки на потребителей наших услуг.
В этой статье мы не пытаемся обратить внимание на дороговизну комплектующих от HP. Более того, мы довольны использованием серверов HP ProLiant и HP BladeSystem. Для поддержки большого количества виртуальных машин на одном физическом сервере требуется больше памяти, больше подключений для хранилищ данных и больше сетевых подключений, поэтому, по нашему мнению, серверы HP, сертифицированные для VMware, являются одними из лучших платформ для виртуализации, так как они были построены «with virtualization in mind».
Сертификация VMware даёт нам возможность стабильного использования всеми опциями платформы виртуализации VMware, которые значительно повышают эффективность и надёжность работы всего облака:
Блокировка страниц в памяти (LPIM)
Эта политика Windows определяет, какие учетные записи могут получать доступ к API для сохранения данных в физической памяти, чтобы система не отправляла страницы данных в виртуальную память на диске. Блокировка страниц в памяти может обеспечивать отклик сервера, когда содержимое памяти заносится в файл подкачки. Для параметра Блокировка страниц в памяти указывается значение "Включено" в экземплярах выпуска SQL Server Standard Edition и выше, если учетной записи с привилегией на выполнение sqlservr.exe предоставлено право пользователя Windows Блокировка страниц в памяти (LPIM).
Чтобы отключить параметр Блокировка страниц в памяти для SQL Server, удалите право пользователя Блокировка страниц в памяти у учетной записи с привилегиями для запуска sqlservr.exe (стартовой учетной записи SQL Server).
Использование LPIM не влияет на SQL Server динамическое управление памятью, что позволяет расширить или сузить ее по запросу других клерков памяти. При использовании пользовательского права Блокировка страниц в памяти рекомендуется задать верхний предел для параметра Макс. памяти сервера, как указано выше.
Использование LPIM с неправильно настроенным параметром максимального объема памяти сервера, в котором не учтены другие потребители памяти в системе, может привести к нестабильной работе. Это зависит от объема памяти, требуемого для других процессов или требований к памяти SQL Server вне области max server memory. См. дополнительные сведения о max server memory.
Начиная с SQL Server 2012 (11.x), флаг трассировки 845 не требуется для использования заблокированных страниц в выпуске Standard Edition.
Настройка фиксированного объема памяти (не рекомендуется)
Установка фиксированного размера памяти
В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.
Щелкните узел Память .
В пункте Параметры памяти сервера введите нужные значения в поля Минимальный размер памяти сервера и Максимальный размер памяти сервера.
Оставьте параметры по умолчанию, чтобы SQL Server изменял требования к памяти динамически, исходя из доступности системных ресурсов. Рекомендуется задать для параметра Макс. памяти сервера значение, указанное выше.
На следующем снимке экрана показаны все три шага:
Установка Nginx
«Nginx» занимается отдачей статического контента (css, изображения, текст) гораздо быстрее чем «Apache». Установка «Nginx» снимет часть нагрузки с «Apache».
Если у вас не установлен Nginx, в разделе «Настройки» нажмите Конфигурация ПО и дважды кликните Веб-сервер (WWW). На открывшейся странице поставьте галочку напротив Nginx и нажмите кнопку Применить изменения:
Убедитесь, что Веб-сервер (WWW) включен:
Установка акселератора (ускорителя) PHP
Производится самостоятельно, либо в рамках услуги «Администрирование сервера».
Задать параметры вручную
Можно установить для параметров сервера Мин. памяти сервера и Макс. памяти сервера значения, покрывающие весь доступный объем памяти. Этот метод полезен для системных администраторов или администраторов баз данных, когда требуется настроить экземпляр SQL Server так, чтобы его параметры не противоречили требованиям к памяти других приложений или других экземпляров SQL Server, запущенных на этом узле.
Параметры min server memory и max server memory являются расширенными. При использовании системной хранимой процедуры sp_configure для изменения этих настроек изменить их можно, только если параметр show advanced options установлен в значение 1. Эти параметры вступают в силу сразу же без перезагрузки сервера.
Параметр min_server_memory используется для гарантированного предоставления минимального объема памяти, доступного диспетчеру памяти SQL Server для экземпляра SQL Server. SQL Server не выделяет немедленно объем памяти, указанный в параметре min server memory , после запуска. Тем не менее, когда это значение достигается с ростом рабочей нагрузки, экземпляр SQL Server не может освободить память, выделенную буферному пулу, если не уменьшить значение параметра min server memory . Например, если на одном узле может находиться сразу несколько экземпляров SQL Server, задайте параметр min_server_memory вместо max_server_memory, чтобы зарезервировать память для экземпляра. Кроме того, необходимо задать значение min_server_memory в виртуализированной среде, чтобы гарантировать, что при дефиците памяти на базовом узле не будет попыток выделить больше памяти из буферного пула в гостевой виртуальной машине SQL Server, чем это необходимо для приемлемой производительности.
SQL Server не гарантирует, что объем памяти, заданный параметром min server memory, будет выделен. Если нагрузка на сервер никогда не требует выделения всего объема памяти, заданного параметром min server memory, сервер SQL Server будет использовать меньше памяти.
Параметр max_server_memory гарантирует, что в ОС не возникнет дефицит памяти. Чтобы задать конфигурацию "Макс. памяти сервера", отследите общее использование памяти процессом SQL Server и определите требования к памяти. Для исходной настройки или при отсутствии возможности получения сведений об использовании памяти процессом SQL Server с течением времени используйте следующий обобщенный подход к настройке значения max server memory для одного экземпляра.
- Из значения общего объема памяти ОС вычтите эквивалент потенциального выделения памяти потока SQL Server, которое превышает значение max server memory (вычисляется так: размер стека 1 * вычисляемое максимальное число рабочих потоков 2 ).
- Затем вычтите 25 % для других выделений памяти вне элемента управления max server memory, например для буферов резервного копирования, библиотек DLL расширенных хранимых процедур, объектов, созданных с помощью процедур автоматизации (вызовов sp_OA), и выделений от поставщиков связанных серверов. Это обобщенное значение, которое может отличаться.
- Остаток и даст значение параметра max_server_memory в случае установки одного экземпляра.
1 Сведения о размерах стеков потока для различных архитектур см. в разделе Руководство по архитектуре управления памятью.
2 Сведения о вычислении рабочих потоков по умолчанию для заданного числа сходных ЦП на текущем узле см. в разделе Настройка параметра конфигурации сервера "Максимальное число рабочих потоков".
Используйте SQL Server Management Studio.
Используйте два параметра памяти сервера, Мин. памяти сервера и Макс. памяти сервера, для настройки объема памяти (в мегабайтах), находящейся в управлении диспетчера памяти SQL Server для экземпляра SQL Server. По умолчанию SQL Server может динамически изменять требования к памяти в зависимости от доступных системных ресурсов.
Читайте также: