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

Конфигурация сервера для PHP / Apache2 / MySQL на 250 000 обращений в день?

Может ли кто-нибудь порекомендовать конфигурацию или, еще лучше, указать мне на полный пример использования этой веб-настройки?

В основном у нас есть php-сайт, который посещает около 100 000 человек в день. При попытке обслужить эту нагрузку на VPS он уже получает таймауты подключения и т. Д. Из-за нагрузки на ЦП. Я хотел бы разработать что-то, что позволит масштабировать его примерно до 250 000 обращений в день.

В настоящее время сервер:

Пока что процессор, кажется, является основным узким местом, поскольку некоторые процессы apache используют около 30% ЦП во время запросов. Некоторые другие процессы apache кажутся намного лучше при 1% ЦП; Я предполагаю, что это запросы на статические файлы.

Так. Мы хотим уйти от VPS на какой-то выделенный или виртуальный выделенный сервер с непиковой (измеримой, гарантированной) производительностью. Он должен уметь обрабатывать трафик currnet и, по крайней мере, вдвое больше в будущем.

Какие-либо рекомендации или исследования, на которые вы можете мне указать?

Существуют ли какие-либо инструменты, которые могут дать вам приблизительную спецификацию сервера на основе таких параметров, как память на процесс apache, процент динамических запросов, является ли код PHP тяжелым материалом CMS или легким материалом hello-world и т. Д.?

Я сомневаюсь, что есть какие-либо полезные тематические исследования по этому вопросу, поскольку производительность всегда будет сильно варьироваться в зависимости от сложности приложения - единственный способ приблизиться к соответствию - это измерить и экстраполировать.

Вы не упоминаете ОС, но я бы установил серию мониторов производительности, фиксирующих потоки, загрузку процессора, статистику памяти, дисковые и сетевые данные и т. Д., Также убедитесь, что вы фиксируете количество обращений, с которыми вы имеете дело. Исходя из этого, вы сможете определить минимальное, среднее и максимальное использование ресурсов для всех этих компонентов на основе фактической видимой нагрузки - как только у вас будет эта статистика (mhz / 10k-users, mem / 10k-users и т. Д.), Вы сможете быстро экстраполировать нужную вам производительность. Обязательно запланируйте примерно 20% дополнительного запаса места даже при максимальной ожидаемой нагрузке.

Я знаю, что это большая работа с электронными таблицами, но это единственный способ почувствовать себя уверенно - ну, всегда есть метод «бросить тонны оборудования на проблему», который тоже работает, но стоит :)

Желаем удачи и вернемся с некоторыми данными позже, если вам понадобится помощь в их понимании.

Просто добавьте nginx в режиме прокси перед apache и настройте его на сервер действительно статических данных, не касаясь apache. Вам выпадет мгновенный прирост скорости.

Затем я бы переключил apache2 в предустановленный режим с 4-16 дочерними элементами.

Фоновая работа, такая как внешние соединения, действительно мешает, я бы переписал этот код, чтобы сделать эти вещи асинхронными.

Наконец, у вас может не хватить полосы пропускания на главном узле (то есть на сервере, на котором находятся все VPS). Спросите у хостинговой компании, есть ли у них 1 Гбит соединение на их главном узле, и если оно всего 100 Мбит - возможно, вы захотите сменить хостинг.