VPS сервер, 256MbRAM

Как правильно настроить VPS сервер с RAM 256МБ? Памяти мало, swap для него отключен, а нужно запустить хостинг на пару сайтов на vps сервере.

По умолчанию установленный Apache2 и MySQL, подстроенный клиентом согласно рекомендациям скрипта mysqltuner.pl не дал результатов, периодически срабатывает OOM killer и убивает процессы mysql и apache2.

Рекомендации хостера новый тариф, попробуем помочь:

Этап первый. Apache2

Выключаем лишние модули Apache2, нам они не нужны, но они загружены

a2dismod status
a2dismod cgi

Правим /etc/apache2/apache2.conf

KeepAlive On
HostnameLookups Off

Apache2 собран с моделью worker, правим количество запускаемых процессов:

<IfModulempm_worker_module>
StartServers 3
MinSpareThreads 3
MaxSpareThreads 3
ThreadLimit      1
ThreadsPerChild  5
MaxClients       5
MaxRequestsPerChild   1000
</IfModule>

Сохраняем и перезапускаем http сервер:

service apache2 restart

Этап второй. MySQL.
Попробуем отключить движок innodb Сам MySQL, если смотреть на вывод скрипта mysqltuner.pl оптимален, но памяти может занять 198Мб. Конвертируем таблички в myisam, я ленивый потому использую bash чтобы пройтись по всем табличкам:

for table in `mysql -u user -pPassw0rD db_example_ru -N -e "show tables;"`; do mysql -u user -pPassw0rD db_example_ru -e "alter table table $table engine=myisam;" ; done

Можно пройтись ручками, поправить каждую табличку, пример:

ALTER TABLE pc105__example_plugin_alerts ENGINE=MYISAM;

Таблицы сконвертированы, отключаем движок innodb, правим /etc/mysql/my.cnf
добавляем строки:

innodb=OFF
default-storage-engine = MyISAM

Перезапускаем MySQL сервер:

service mysql restart

В итоге потребление памяти MySQL вдвое меньше.
Компромисс достигнут, срабатывания OOMkiller за неделю не было, памяти пока хватает :).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.