Назад | Перейти на главную страницу

Nginx + PHP 5.3.3 (с php-fpm) - использование памяти?

Я недавно купил Xen VPS (linode.com) с Debian 5.0 Lenny (i386), 512 МБ ОЗУ. На данный момент у меня есть только три небольших веб-сайта (построенных на Drupal), на которых работает около 600 пользователей в день.

В качестве веб-сервера я использую nginx 0.7.67 (PHP 5.3.3 с участием php-fpm). Среднее потребление памяти составляет около 100-105 МБ. Вот что показывает график Мунина:

и вот что показывает "верхняя" команда (отсортированная по использованию памяти):

В моем php5-fpm.conf:

pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500

Перед переносом некоторых более крупных проектов на этот VPS я хотел бы знать, является ли это нормальным потреблением памяти для такой конфигурации сервера? Сколько пользователей на веб-сайте (скажем, созданном с помощью Zend Framework) может обрабатывать этот VPS?

Спасибо!

Это нехорошо, ваш процесс php5-fpm занимает около 35 месяцев. В этой конфигурации у вас может быть 50 процессов (max_children = 50), каждый из которых выделяет 35 месяцев. таким образом, ваша машина, у которой есть только 512Mo, будет заменена. Я думаю, что ваш лимит составляет около 10 процессов php-fpm (max_children = 10).

На мой взгляд, это хорошо. Ваш PHP + MySQL занимает всего около 100 мегабайт оперативной памяти, оставляя достаточно места для операционной системы.

Для вашего вопроса "сколько пользователей может обрабатывать этот VPS?" вопрос: это зависит от обстоятельств. Я думаю, что при правильном кэшировании и других передовых методах он должен обрабатывать как минимум десятки запросов в секунду, если не больше.

Если контент очень динамичен и плохо кэшируется, а структура базы данных оказывается сложной и / или база данных большая, то производительность будет снижаться.

Обычно память будет первым пределом, который вы достигнете всякий раз, когда ваш трафик растет, с высокодинамичным контентом будет мучить и процессор.

Линод качается! Мой единственный совет - переместить MySQL на отдельный линод объемом 512 МБ. Выгоды многочисленны, и, если 20 долларов в месяц не обанкротятся, недостатков нет.

Моя интуиция подсказывает мне, что вы используете debian или ubuntu ... Посмотрите библиотеку сценариев стека. Есть выделенный сервер MySQL, оптимизированный для линода. Затем добавьте частный IP-адрес (бесплатно) к вашему серверу file / nginx / php-fpm и добавьте частный IP-адрес на свой сервер db. Все данные будут перемещаться по локальной сети в DC вашего линода. Это быстро и не учитывается в месячном ограничении пропускной способности.

Вы даже можете разместить свой сайт «большего проекта» на том же линоде nginx / php-fpm. По мере увеличения трафика вы можете добавлять выделенные VPS с memcached, выделенные VPS PHP-FPM и масштабировать по горизонтали на столько линодов по $ 20 512 МБ, сколько хотите / необходимо.

Ваш db будет масштабироваться по вертикали ... поэтому, когда он начнет голодать, увеличьте его до следующего размера.

То, насколько он может обработать, будет зависеть от таких факторов, как кэширование, чистый код и количество вызовов базы данных на загрузку страницы ... Отделение внешнего интерфейса от базы данных легко открывает дверь для «масштабирования до любого размера».

Меня тоже беспокоил этот факт. Я использую систему виртуального сервера Amazon EC2 с микро-экземпляром, который имеет только 613 МБ «памяти». По результатам нашего тестирования я могу сказать, что он может обрабатывать одновременно не менее 50 детей без каких-либо заметных проблем. Я не могу объяснить поведение, но могу сказать, что оно все еще работает.