Ошибка Пилоны - «Сервер MySQL ушел»

голоса
13

[Я надеюсь, что это не слишком неясное ... Я попрошу телеконференции, если никто не знает, здесь]

Я использую Пилоны (фреймворк Python), чтобы служить простой веб-приложение, но это, кажется, умирает, время от времени, с этим в журнале ошибок: (2006, 'MySQL server has gone away')

Я сделал немного проверки и увидел , что это произошло потому , что подключение к MySQL не обновляется. Это не должно быть проблемой, потому что sqlalchemy.pool_recycleв конфигурационном файле должна автоматически сохранить его живым. По умолчанию было 3600, но я набрал его обратно 1800из - за этой проблемы. Это немного помогло, но 3600 должно быть хорошо в соответствии с Документами. Ошибки все еще случаются полурегулярно. Я не хочу , чтобы понизить его слишком много , хотя и DOS моя :) базы данных.

Может быть, что-то в моей MySQL конфигурации тупой? Не знаю, где искать точно.

Другие важные детали:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
Задан 11/08/2008 в 18:59
источник пользователем
На других языках...                            


2 ответов

голоса
2

Вы можете проверить переменные тайм-аута в MySQL:

show variables like '%timeout%';

Вы , вероятно , заинтересованы в wait_timeout(менее вероятно , но возможно: interactive_timeout). В Debian и Ubuntu, по умолчанию являются 28800 (MySQL убивает соединения через 8 часов), но , возможно , по умолчанию для вашей платформы отличается или тот , кто администрирует сервер настроил вещи по- другому.

AFAICT, на pool_recycleсамом деле не держать связь жив, он истекает их самостоятельно , прежде чем MySQL убивает их. Я не знаком с пилонами, но если причина соединения с перерывами сделать SELECT 1;это вариант, который будет держать их живой цены в основном без нагрузки сервера и минимального сетевого трафика. Одна последняя мысль: вы каким - то образом удается использовать соединение, пилоны считает он истек?

Ответил 18/08/2008 в 20:35
источник пользователем

голоса
6

Я думаю, что я установил его. Это получается, у меня была простая ошибка конфигурации. Мой ини файл следующим образом:

sqlalchemy.default.url = [connection string here]
sqlalchemy.pool_recycle = 1800

Проблема заключается в том, что мой environment.pyфайл заявил , что двигатель будет только карта ключей с префиксом: sqlalchemy.defaultтак pool_recycleбыл проигнорирован.

Решение состоит в том, чтобы просто изменить вторую строку в INI до:

sqlalchemy.default.pool_recycle = 1800
Ответил 05/09/2008 в 17:07
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more