Я хотел бы поделиться своей ситуацией, потому что, возможно, это поможет другим, и мне нужен совет.
Я администрирую VPS с некоторыми веб-серверами и высоким трафиком.
Системные характеристики: x2 Xeon E2620 с 2 ядрами, 18 ГБ оперативной памяти и 800 ГБ жесткого диска.
Первым шагом, когда я получил полный доступ, была проверка конфигурации сервера.
Система содержит:
На первый взгляд (позже подтверждено) настройки сервера и архитектура системы не оптимальны.
Сервер почти все время занят, а доступ в Интернет очень медленный.
Итак, я думаю, что у меня есть пара альтернатив, чтобы обойти эту ситуацию, потому что трафик только растет.
Это означает настройку Apache, preforks, MySQL, удаление ненужного программного обеспечения и т. Д.
ИЛИ
Моя идея, и я сомневаюсь, что вы порекомендуете для масштабирования.
nginx, php-fpm, varnish, APC ИЛИ nginx, работающие вместе с Apache.
Я думаю, что первое лучше, потому что все они работают на одной машине.
Спасибо.
Это довольно широкий вопрос, так что это будет общий ответ. Но да, вам будет намного проще масштабировать nginx. Я бы порекомендовал вам заменить Apache и mod_php
с nginx и php-fpm
. Я бы также обновился до PHP 5.6.x и начал использовать модуль Zend Opcache, включенный в него, вместо APC. Если вы также используете APC для «кеширования пользователя», а не только для кеширования кода операции, вы можете заменить эту функциональность модулем «APCu». Varnish действительно может быть полезен для повышения производительности обслуживания статических ресурсов, но я бы начал с низко висящих плодов.
Когда вы используете php-fpm
, ваши PHP-исполнители могут масштабироваться независимо от ваших входящих HTTP-соединений, что может дать вам преимущество в отношении использования памяти. Кроме того, веб-сервер может использовать потоки вместо процессов для обработки запросов, поскольку PHP работает вне области памяти веб-сервера.
С mod_php
метод, который вы в настоящее время используете, тот же процесс, который принимает, ожидает и обслуживает запрос, также запускает интерпретатор PHP и сохраняет его в памяти до тех пор, пока запрос не будет полностью обработан.
Я думаю, вы на правильном пути; идите со своей интуицией, я бы поступил так, как описано выше. Всегда будет больше вещей, которые можно настроить и оптимизировать, но, не зная больше о специфике использования системы и того, что она обслуживает, трудно пойти намного глубже.