Мы используем отдельные (виртуальные) серверы, но поддерживаем отдельные стеки на каждом просто потому, что накладные расходы небольшие, и это обеспечивает гибкость, если мы хотим увеличивать / уменьшать масштаб. Однако это не запасной вариант, потому что, если один сервер настолько сломан, что он недоступен в Интернете, вы, вероятно, не сможете получить данные с него и на второй сервер, чтобы он стал полезной заменой. Используйте правильные резервные копии для резервных копий и регулярно выполняйте восстановление из них.
Moodle обычно блокируется на стороне PHP, а не на стороне БД, и мы видим примерно 3,5: 1 загрузки ЦП PHP: MySQL, когда они находятся на разных машинах. Имея это в виду, вам необходимо учитывать максимальную емкость одного сервера: вы получите лучшую производительность, если у вас вообще нет сетевых накладных расходов между машинами, поэтому чем больше, тем лучше. Если вы не можете сделать это с одним, то лучшим вариантом будет создание двух VMS, один большего размера для PHP и один меньшего размера для MySQL, но проверьте различия под нагрузкой для вашей конкретной установки (используйте Apache JMeter для этого).
В наших самых больших установках задействовано около 70 000 пользователей, и у нас есть две виртуальные машины с 4 ЦП / 8 ГБ, одна для PHP и одна для MySQL (хотя для DB редко превышает 30% ЦП). Это позволяет поддерживать около 400 одновременных подключений через Apache. Однако мы используем большую ферму виртуальных машин и можем легко масштабировать от 2 до 16 процессоров, поэтому вы можете рассмотреть возможность использования одной машины-монстра, если вам нужна гибкость.
Дополнительную информацию о производительности Moodle можно найти здесь, особенно в разделе «масштабируемость».
person
Matt Gibson
schedule
22.02.2012