Спящие процессы mysql не очищаются - PullRequest
1 голос
/ 14 февраля 2012

Я продолжаю получать спящие процессы mysql, пока мои пользователи используют мое приложение CakePHP.

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

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

ERROR

The requested URL could not be retrieved

While trying to retrieve the URL: [no URL]

The following error was encountered:

Read Timeout

The system returned:

[No Error]

A Timeout occurred while waiting to read data from the network. The network or server may be down or congested. Please retry your request.

Your cache administrator is root.

Я изо всех сил пытаюсь определить, что вызывает запрос "засыпание", и, следовательно, исправить его.

На мой взгляд, существует три варианта решения проблемы:

  1. MySQL
  2. CakePHP
  3. Apache

Есть идеи?

Мои SHOW PROCESSLIST результаты запроса показаны ниже:

        ID  User        Host            Database        Command Time    Status  SQL query
Kill    330 instrument  localhost:1267  instrument_2012 Sleep   5235    ---     ---
Kill    331 pma         localhost:1270  None            Sleep   0       ---     ---
Kill    332 root        localhost:1271  mysql           Query   0       ---     SHOW PROCESSLIST

Примечания

  • Я не использую постоянные соединения.
  • Все пользователи подключаются к базе данных через приложение CakePHP.
  • Приложение подключается к базе данных, используя «инструмент» в качестве имени пользователя.
  • Перезапуск службы mysql (а не службы apache) не влияет.
  • Загрузка ЦП увеличивается до 50% с <1% после зависания до перезапуска службы apache </li>

EDIT

Я ограничил число записей, которые я получаю в запросе, до 800, а время ответа составляет 12 секунд. Когда я получаю 1200 записей, время отклика составляет 72 секунды. Когда я получаю 1600 записей, время ответа составляет 132 секунды.

Почему время отклика увеличивается так быстро?

1 Ответ

0 голосов
/ 14 февраля 2012

Я не думаю, что это проблема mysql, но php / apache. Можете ли вы проверить, как называется процесс, вызывающий высокую загрузку ЦП?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...