У меня есть небольшой веб-сервер, на котором запущено несколько приложений Python Django, MySQL и многосайтовый экземпляр wordpress. Все это работает на Apache с mpm worker, fastcgi и mod_wsgi + memcached
Сервер достигает небольшого лимита памяти в 256 мегабайт. У меня есть выбор: либо обновить машину до 512 мегабайт, либо получить новую машину и разделить службы - MySQL на одном, все остальное - на другом (?).
Или просто переместить memcached?
Или разделите сервер - один для PHP-файлов Wordpress, а другой для Django.
Я использую CDN с облачными файлами для обслуживания всего медиаконтента.
Я ожидаю, что на том уровне, который вы ищете, это, вероятно, будет сводиться к разрыву цен - масштабирование дает больший потенциал в долгосрочной перспективе, но у вас так много возможностей для масштабирования на данный момент, просто обновление сервера не поможет подколоть вас.
Тем не менее, вы можете захотеть взглянуть на свою архитектуру, в настоящее время вы используете memcached на том же компьютере, что и сервер MySQL, поэтому они конкурируют за ту же память (игнорируя веб-сервер на данный момент). Я действительно не вижу ценности использования memcached на этом сервере, поскольку любое кеширование, которое он выполняет, просто использует оперативную память, которую MySQL может использовать для своих собственных внутренних кешей.
Если бы я был на вашем месте, я бы отказался от memcached (если у вас нет каких-либо серьезных требований к нему) и сейчас горизонтально (переместите MySQL на выделенный сервер, настройте Apache для использования дополнительной освобожденной ОЗУ) - добавьте memcached обратно, когда вы начнете получить проблемы с производительностью базы данных.
Увеличить масштаб. Пока вы не достигнете 1-2 ГБ, вы можете получить огромный прирост производительности на своем сервере за счет увеличения оперативной памяти и избежания сложностей, связанных с запуском и обслуживанием нескольких машин.
Конечно, вы не получите преимуществ высокой доступности от запуска двух машин, но у вас также не будет проблем с написанием масштабируемого приложения, развертыванием на нескольких машинах, защитой / установкой исправлений и обновлением нескольких машин и т. Д.
Уменьшить масштаб. Вы сможете лучше понять рабочие характеристики каждого компонента и оттуда внести коррективы.
Я бы даже предложил провести работу по настройке второго веб-узла и настройке балансировки нагрузки (управляемые балансировщики нагрузки RS работают достаточно хорошо) в не столь отдаленном будущем, поскольку вы купите себе избыточность и производительность, и я всегда хотел настройте эти вещи на первых порах, чтобы вы не пытались выполнять эту работу, когда сайт действительно начинает набирать обороты.