Оптимальные конфиги для связки: DigitalOcean(5$) + VestaCP + Wordpress?

Пару месяцев назад решил сменить шаред хостинг на VDS. Выбор пал на DigitalOcean с минимальным 5-и долларовым тарифом (т.к. предназначается для парочки сайтов с небольшим посещением: 50-100 чел/сутки).

В общем, всё нравится, но встала проблема с частым отваливанием MySQL. (Ошибка подключения к базе данных).
Гугление показало, что у многих наблюдается подобная проблема, когда убить сайтину можно банальным долгим зажатием клавиши F5.. Я уже не говорю о проваленных онлайн тестах на нагрузку, типа webpagetest.org loaddy.com и т.п.

Основной месседж с форумов мне понятен - однозначно менять дефолтные настройки на оптимизированные под мою конфигурацию сервера:
Debian 7.0 x32
512MB Ram
20GB SSD
CMS: Wordpress
В результате танцев с конфигами во всяко-разных nginx.conf и т.д. вроде бы удалось спасти сайты от зажатой F5, но все онлайн тесты по прежнему с лёгкостью убивают MySQL.
Учитывая популярность используемой мной связки сервера, ОС, панели управления и движка сайта, может у кого-нибудь здесь уже имеются проверенные наработки в правильной настройке всего этого добра? Буду благодарен за дельные советы!
  • Вопрос задан
  • 7819 просмотров
Пригласить эксперта
Ответы на вопрос 3
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Веста хоть и самая легкая из CP, но все же жрет ресурсы, а на дроплете за $5 их и так очень мало. Ну а для одного сайта зачем вообще контрольная панель?! Удалите к чертям. Ну или попробуйте объяснить, зачем вам эта панель вообще нужна. Уверен, смысла в ней нет.

2. На минимальном дроплете надо все делать максимально продуманным и эффективным. Обязательно нужен swap 512Мб или даже 1Гб. Nginx, желательно последний mainline. PHP5-FPM с Opcache, для Opcache необходимо выделить 32Мб. Если сайтов больше чем 1 - возможно придется увеличить до 64Мб. Вместо MySQL ставим MariaDB. Обязательно ставим Memcached, php5-memcached (c буквой "d" в конце), ему даем 64-128Мб памяти. В WordPress устанавливаем плагин Memcached Redux (только внимательно читаем как его устанавливать - вместо активации плагина надо скопировать файл в wp-content). Это включит persistent object cache на уровне WordPress, большинство запросов вообще перестанет доходить до БД, а это самое узкое место на минимальном дроплете. Кроме того, если уж делать все серьезно, ставим плагин FFPC (Fast Full Page Cache), он позволит кешировать страницы целиком, а чуть поковырявшись с конфигами, можно кешировать страницы в Memcached (то есть в память), и отдавать их оттуда непосредственно Nginx'ом, даже не поднимая PHP-процесс, и уж тем более не касаясь базы данных. Объем памяти для Memcached, возможно, придется увеличивать - все зависит от объема сайта. Но при таком подходе вы получите очень высокую скорость отклика от своего маленького сервера, и он сможет выдерживать очень большие нагрузки. С полностью кешированным в память сайтом и отдачей Nginx'ом непосредственно из Memcached, а также с оптимизированным кодом и файлами (минификация и конкатенация скриптов и стилей, gzip, оптимизированные картинки и т.д., минимизация количества запросов и т.п.) данный дроплет за $5 сможет обслуживать и 50 000 просмотров в сутки. А это уже 1 500 000 в месяц. Даже пиковые 1-2-3 тысячи запросов (что будет крайне редко, если будет вообще) за короткий промежуток времени ("хабраэффект") пройдут еле-еле заметно - даже если начнет использоваться swap, на SSD-дисках он быстр. В итоге часть клиентов будут испытывать небольшие задержки, не более. Но это речь об одновременной тысяче посетителей на сайте, не меньше. К тому времени, как аудитория сайта дорастет до этого уровня, уверен вы уже перейдете хотя бы на дроплет за $10. А там ресурсов больше, при аналогичном подходе этот дроплет выдержит намного больше.
Ответ написан
@FitEmpire
У самого такой сервер, была похожая проблема.

https://forum.vestacp.com/viewtopic.php?f=32&t=5070
MySQL попал и в upstart и в init.d.
Сделайте chmod -x /etc/init.d/mysql, чтобы MySQL запускался только из upstart'a.
Ответ написан
Комментировать
@Ingg
Почитайте тык
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы