Мне нужно запустить приложение Linux-Apache-PHP-MySQL (платформа электронного обучения Moodle) для большого числа одновременно работающих пользователей - я нацеливаюсь на 5000 пользователей. Под параллельным я имею в виду, что 5000 человек должны иметь возможность работать с приложением одновременно. «Работа» означает не только чтение базы данных, но и запись.
Приложение не очень типичное, так как оно выполняет много вставок / обновлений в базе данных, поэтому методы кэширования не очень помогают. Мы используем хранилище InnoDB. Кроме того, приложение не написано с учетом производительности. Например, один поток Apache обычно занимает около 30-50 МБ ОЗУ.
Буду признателен за информацию о том, какое оборудование необходимо для построения масштабируемой конфигурации, способной справиться с такой нагрузкой.
Сейчас мы используем два HP DLG 380 с двумя 4-ядерными процессорами, которые способны справляться с гораздо меньшей нагрузкой (обычно 300-500 одновременно работающих пользователей). Разумно ли инвестировать в подобные блоки и создавать кластер, используя их, или лучше использовать более качественное оборудование?
Мне особенно любопытно
- сколько и насколько мощных серверов
необходимо (количество процессоров / ядер, размер оперативной памяти)
- какое сетевое оборудование должно
быть использованы (какие переключатели,
сетевые карты)
- любое другое оборудование,
как конкретное дисковое хранилище
необходимые решения и т. д.
Другое дело, как собрать все, что является наиболее оптимальной архитектурой. Кластеризация с MySQL довольно сложна (люди жалуются на MySQL Cluster, даже здесь, на Stackoverflow).