Помимо ограничения количества одновременных подключений MySQL, PHP / Apache играет какую-либо роль в сбрасывании подключений? - PullRequest
1 голос
/ 30 сентября 2011

Если MySQL отбрасывает подключения в приложении PHP, а ограничение количества подключений MySQL установлено выше числа одновременных пользователей в приложении, какие другие факторы могут способствовать такому поведению? Кроме того, анализируя журналы Moodle (единственное приложение, работающее на этих серверах), вчера у меня было в 4 раза больше активности, и он ничего не сбрасывал, но сегодня были времена, когда это расстраивало количество разорванных соединений.

Мой главный вопрос здесь заключается в том, почему база данных отклоняет соединения, когда она этого не делала раньше, с активностью в 4 раза больше (и все то же самое, я ничего не менял между ними). ​​

Краткая справка: у меня на хостинге работают 2 сервера:

  • общий сервер под управлением Debian Linux / PHP 5.3 (FastCGI)
  • VPS под управлением Debian Linux / MySQL 5.1.39

В этой среде я использую только Moodle 1.9.12 (для подключения к базе данных с использованием adoDB и постоянных подключений), часть php на общем сервере, база данных на VPS. Я подозреваю, что из-за того, что PHP работает на общем сервере, другие учетные записи хостинга влияют на меня (я имею в виду, что база данных отклоняет соединения, мне действительно безразлично ОЗУ / ЦП).

Читая о проблеме, которую я видел в местах, где постоянные соединения не работают хорошо с PHP как CGI / FastCGI и что, если оба сервера находятся в локальной сети, на самом деле не имеет значения использование постоянных или не постоянных соединений, потому что соединения будет быстрым в любом случае. Поэтому сейчас я использую непостоянные соединения. Я думаю, что это может быть частью проблемы, но я не понимаю, почему это работает с большей нагрузкой. Какие настройки PHP / Apache здесь задействованы?

1 Ответ

1 голос
/ 04 марта 2012

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

Если вы ничего не изменили в своемконфигурации и раньше она работала с более высокими нагрузками, более вероятно, что это проблема с сетевым подключением между двумя компьютерами.Поскольку компьютер базы данных является VPS, вы также не знаете, сколько реальной сетевой нагрузки он обрабатывает.Если у вашего интернет-провайдера есть компетентный персонал поддержки (что, к сожалению, не всегда так), то ему не помешает спросить его, если у него есть объяснение.

То же самое относится и к вашему «общему» веб-серверу.Хотя это маловероятно, не исключено, что это проблема слишком большого количества соединений на этом компьютере.

Это также поможет узнать, как именно вы измеряете пропущенные соединения.Если вы смотрите на счетчик прерванных соединений mySQL, это не обязательно является мерой реальной проблемы: http://dev.mysql.com/doc/refman/5.1/en/communication-errors.html. Пользователь, прерывающий загрузку страницы, уже может увеличить этот счетчик.

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

...