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

Повышение производительности одновременных пользователей в приложении LAMP

У нас есть приложение LAMP, в котором мы начали ощущать снижение производительности из-за большого количества одновременных пользователей, подключающихся к приложению. Я рассмотрел отдельные параметры Apache и MySql, где нам нужно настроить их для повышения производительности при большом количестве пользователей, и я не думаю, что это вызывает какие-либо дальнейшие улучшения. Я хотел бы знать, есть ли какие-либо другие стратегии, которые мы можем рассмотреть для увеличения числа одновременных пользователей, которые могут использовать наше веб-приложение LAMP, не наблюдая снижения производительности. Можно ли добавить еще сервер apache или несколько серверов mysql и сбалансировать их нагрузку?

Вероятно, первое, что снизило производительность приложения с поддержкой БД, - это производительность запросов. Вы запускали какой-либо анализ запросов в своем приложении / БД, чтобы узнать, на что тратится время запроса?

После оптимизации производительности запросов существуют другие стратегии оптимизации для вашей первой БД, прежде чем вы рассмотрите возможность распространения своей БД на более производительную многоузловую архитектуру. Вы можете посмотреть на такие вещи, как: - Ключи и индексы (связанные с производительностью запросов, но также важные для оптимизации таблиц) - Размер базы данных и разбиение диска (включая размер данных) - Механизмы хранения (Какая версия LAMP / MySQL? Механизм MyISAM был по умолчанию для MySQL до 5.5.5) - Настройка буфера / кеша

Вы можете получить более подробную информацию о серверах FOSS, включая установки LAMP и MySQL, в проекте сервера FOSS, http://www.veriserver.net/a/fossmain.htm. По этому адресу есть ссылка на технический форум, который предоставляет администраторам серверов помощь FOSS.

Несмотря на то, что люди предостерегают от ответов на ваши вопросы из-за вашего низкого уровня принятия, я здесь новичок, поэтому не уверен, что это вообще означает. Пока я не выясню, вот несколько вариантов.

Первое, что вам нужно сделать, это выяснить, где именно находится узкое место вашего приложения. Начните с прохождения вашей разрабатываемой копии приложения с xDebugс профайлер. Это даст вам очень точный обзор выполнения.

Если вам не повезло и ваши проблемы проявляются только в продакшене (под нагрузкой), я предлагаю попробовать Facebook xhprof который примерно делает то же самое, что и xDebug, но более легкий.

Чаще всего проблема медленных приложений - это база данных. Поскольку вы используете MySQL, я предлагаю включить его журнал медленных запросов и дать ему поработать 24-48 часов. Это еще больше замедлит ваше приложение, но оно того стоит, если вы разберетесь с проблемой.

Через некоторое время вы используете Percona Toolkit (ex-Maatkit) pk-запрос-дайджест для анализа медленного журнала. Он может (и, вероятно, покажет) вам один или два запроса, которые вы можете исправить и повысить производительность.

В конце концов, вам может вообще не понадобиться новое оборудование.