Конфигурация Apache и конфликт mysql max_used_connection в Ubuntu 11.10

У меня есть серьезные проблемы с моим рабочим сервером под управлением Ubuntu 11.10 с 48 ГБ ОЗУ. Настройка моего веб-сервера (Apache 2.1) настроена на использование приблизительно 18 ГБ ОЗУ. Я пытался вычислить это значение, установив

  • max_clients 800

с каждым дочерним процессом, принимающим почти 23 МБ ОЗУ

  • max_spare_servers 200
  • KeepAlive on
  • keepalivetimeout 3

Apache MPM настроен на модуль prefork

Дополнительно мы используем

  • php 5.3.2
  • PDO для подключения к базе данных

Я сделал аналогичные изменения на моем сервере MySQL (v5.1), изменив max_used_connections на 800 с

  • key_buffer to 4Gb (Myisam как движок по умолчанию с 3 таблицами innodb)
  • key_buffer_size + (read_buffer_size + sort_buffer_size) * max_connections = 5.4Gb

Теперь max_used_connection быстро увеличивается, и через пару часов он остановился на 595 и снова поднялся до своего максимального значения 800. Я даже попытался изменить конфигурацию mysql по умолчанию, но все еще без изменений.

По какой-то причине переход к настройке Apache по умолчанию решает проблему, теперь max_used_connections стабильно около 57.

У кого-нибудь есть представление об этом поведении? Может ли конфигурация Apache влиять на производительность Mysql?

1 ответ

Это ужасный способ запустить apache на большом сервере.

Пожалуйста, рассмотрите возможность запуска рабочего MPM (облегченная модель многопоточности) и прокси-динамические запросы (PHP) к бэкэнду fastCGI через официальный модуль apache mod_fcgid.

Также убедитесь, что вы установили статическое число соединений PHP -> mysqli и повторно используете этот пул.

Вы можете тривиально поддерживать 5000 одновременных клиентов с помощью описанной выше настройки.

Другие вопросы по тегам