PHP / mySQL: как отладить ошибку «слишком много соединений»?

8

Я сейчас работаю с веб-сайтом PHP на выделенном сервере моего клиента, и я периодически получаю сообщение об ошибке, too many connectionsно ~ 5 пользователей просматривают эту страницу.

В phpMyAdminI можно видеть , что max connectionsпеременная установлена 400.

На нашем локальном сервере MySQL в моей корпорации мы max connectionsустановили, 200и другие помощники одновременно используют этот сервер.

Я слышал, что на их сервере какая-то другая сеть использует тот же MySQL с большим трафиком.

Вот мои вопросы:

  • Как отладить эту проблему?
  • Могу ли я посмотреть список SQL-запросов, выполненных за последние 10 минут, чтобы проверить, является ли это нашей проблемой или их?
HSZ
источник

Ответы:

2

Симптомы, которые вы описываете, указывают на постоянные связи. В некоторых установках PHP не очень хорошо обрабатывает постоянные соединения: он стремится открывать новые соединения, а не повторно использовать существующие. Я предлагаю вам отключить эту функцию и посмотреть, сохраняется ли проблема:

  • На уровне кода: найдите вызовы mysql_pconnect () и замените их на mysql_connect () .
  • На уровне конфигурации: найдите директиву mysql.allow_persistent и установите для нее значение false.

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

Альваро Гонсалес
источник
Я также снимаю это дело. Вообще я не могу изменить их веб / конфигурацию сервера, чтобы внести эти изменения (мой веб нигде не используется persistent connections). Завтра я собираюсь встретиться с их человеком, и я попрошу их сделать это.
2010 года
Это не требует изменения какой-либо конфигурации сервера. Вам просто нужно обновить PHP-скрипты для приложения.
Майкл Миор
Конечно, но у меня нет доступа ко второй веб-странице, которая также использует тот же сервер MySql - поэтому я не могу обновить их скрипт PHP, который может использовать mysql_pconnect. phpinfo()мне показывает , что `mysql.allow_persistent` является On. Изменение этого флага на Offне даст никаких результатов - его следует заменить на их машине.
2010 года
Они изменились mysql.allow_persistentна, Offи наша CMS ускорилась, и теперь нет никаких проблем со связями. Спасибо! Но мне все еще интересно, как проверить, какие скрипты соединялись с сервером MySql?
HSZ
SHOW PROCESSLIST расскажет вам о пользователе, хосте, БД и (если вам повезет) запросе.
Альваро Гонсалес