Мы используем стек LAMP (Perl, MySQL), и недавно мы столкнулись с примерно утроением нагрузки на нашу базу данных из-за увеличения использования и изменения поведения пользователей ... что привело к перегрузке нашей системы.
Используя довольно стандартную трехуровневую архитектуру, множество веб-серверов (похоже, не проблема), несколько специализированных серверов (не считать это проблема) и довольно большая база данных MySQL на современном оборудовании Sun с лотом (72 ГБ) памяти (БД, похоже, является текущим узким местом).
Думаю, два вопроса:
1) Кто-нибудь знает о некоторых ресурсах, на которые они могут указать нам, чтобы помочь нам решить наши проблемы с нагрузкой? Покупка оборудования определенно возможна; как изменения конфигурации ...
2) Кто-нибудь, имеющий опыт массового масштабирования LAMP-стека, был бы заинтересован в платной консультационной работе? Нам нужен кто-то немедленно, желательно желающий поехать в Роли, Северная Каролина, чтобы помочь на месте ... Первая цель - выбраться из текущего кризиса; Вторая цель - помочь спланировать еще одно 10-кратное увеличение использования в течение следующих 2 лет.
(Подвопрос к вопросу №2: куда бы вы пошли искать такого консультанта ???)
Заранее спасибо! -Стив
Покупка оборудования определенно возможна; как изменения конфигурации ...
Это были бы №2 и №3 в моем списке кандидатов, №1 - дизайн базы данных. Обычно, когда нагрузка на базу данных внезапно увеличивается без соответствующего роста использования, где-то возникает проблема O (n ^ m). Полное сканирование таблицы при объединении, неэффективная денормализация, сбой n + 1, возможно, конфликт блокировки при вставке данных и тому подобное. Решения могут быть такими простыми, как добавление нескольких хорошо подобранных индексов, или столь же сложными, как переработка модели данных.
Я не работал с MySQL в течение многих лет, но помню, что вы можете записать все запросы и время их выполнения. Вы должны посмотреть этот журнал и выяснить, что именно заставляет базу данных стать узким местом.
Хорошая новость: если это проблема с БД, то многие виды работы с БД можно эффективно выполнять через удаленное соединение. Если вы можете быстро настроить VPN в кластере серверов и удаленную учетную запись SSH / терминала, круг ваших консультантов быстро расширяется.
Я никогда не работал с Percona я, но их книга о масштабируемости и производительности MySQL действительно хороша, как и их работа над Maatkit. Среди других консультантов, оказывающих помощь сообществу: Джереми Коул @ Proven Scaling и Команда Open Query.