У меня есть веб-сайт с более чем: 500 MySQL-запросами в секунду - 2 миллиона + запросов в час. Онлайн пользователей симультаны 150+.
Сервер всегда загружен.
веб-сайт, построенный на PHP / MySQL
Я уже оптимизировал конфигурации apache, mysql.
Конфигурация моего выделенного сервера:
Процессоры 8: Intel (R) Core (TM) i7 CPU 860 @ 2,80 ГГц Оперативная память: жесткий диск SCSI 12 ГБ
Я хочу спросить, является ли Memcached лучшим решением этой проблемы, или мне нужно отделить сервер MySQL от веб-сервера.
Наилучшие пожелания,
Я не уверен, что вы обязательно указали на «проблему» - если вы говорите, что существует 500 запросов MySQL в секунду, очень подразумевается, что сервер нагружен. Но это проблема только в том случае, если нагрузка замедляет работу системы или вызывает другие проблемы.
Нам действительно нужна более конкретная информация о том, как выглядит ваша производительность, чтобы предоставить конкретные рекомендации (например, сколько памяти используется для MySQL и Apache? Как насчет ЦП?); трудно определить области, которые нужно улучшить, если вы не знаете, какие ресурсы у вас заканчиваются.
Однако у меня есть предположение, основанное на предоставленной вами информации; 500 запросов в секунду для 150 одновременных пользователей - это очень высокий уровень; 3,3 запроса на пользователя в секунду? В этом случае memcached может быть очень хорошим выбором, чтобы снять эту нагрузку с процесса базы данных (если в запросах достаточно повторений), а также просто попытаться заставить код генерировать немного меньший трафик базы данных.
Ваш первый шаг должен состоять в том, чтобы разделить компоненты стека LAMP, переместив сервер apache / php с оборудования, на котором размещен экземпляр MySQL. Тогда у вас будет меньше конфликтов за память и диск, поскольку пространство ОЗУ и ввод-вывод для приложения будут использовать разные ресурсы, чем база данных.
Если вы все еще не можете управлять нагрузкой, вам следует добавить дополнительные серверы Linux / PHP в горизонтальной конфигурации.
Я бы рекомендовал установить программу мониторинга Ganglia, чтобы увидеть, где ваш сервер находится в узком месте. По мере того, как вы добавляете больше серверов, это значительно поможет вам при планировании емкости и масштабировании вашего приложения.