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 за неделю не было, памяти пока хватает :).