2014-10-27 2 views
2

У меня возникает странная, повторяющаяся, но не постоянная ошибка, когда я получаю «2013», «Потерянное соединение с сервером MySQL во время запроса». Эти помещения:«Потерянное подключение к серверу MySQL во время запроса» в Google Cloud SQL

  • приложение Python бежит вокруг 15-20minutes каждого часа, а затем останавливается (ежечасно, запланированное на хронах)

  • приложение находится на n1-highcpu-2 экземпляр GCE, то дб на D1 с пакетом в плане ценообразования и следующих MySQL флажками

max_allowed_packet 1073741824 
slow_query_log on 
log_output TABLE 
log_queries_not_using_indexes on 
  • база данных доступна только этим приложением, и это приложение только поэтому использование является тем же самым, около 20 минут подряд в час, а затем вообще ничего для других 40 минут

  • первый запрос он делает

SELECT users.user_id, users.access_token, users.access_token_secret, users.screen_name, metadata.last_id 
FROM users 
LEFT OUTER JOIN metadata ON users.user_id = metadata.user_id 
WHERE users.enabled = 1 
  • выше запрос соединяет две таблицы, каждая из Аро унд 700 линий тоскует и не имеют индексы

  • после этого запроса (который занимает 0,2 секунды, когда он работает без проблем) начинается приложение без каких-либо проблем

Глядя на журналы, я вижу, что каждый раз, эта ошибка представляет собой интервал между началом запроса, а ошибка составляет 15 минут.

Я также включен медленный журнал запросов и тех запросов регистрируются как это:

start_time: 2014-10-27 13:19:04 
    query_time: 00:00:00 
    lock_time: 00:00:00 
    rows_sent: 760 
rows_examined: 1514 
      db: foobar 
last_insert_id: 0 
    insert_id: 0 
    server_id: 1234567 
     sql_text: ... 

Любые идеи?

ответ

1

Если ваше соединение простаивает в течение 15-минутного промежутка, вы, вероятно, видите, что GCE отключает ваше простоя TCP-соединения, как описано в https://cloud.google.com/compute/docs/troubleshooting#communicatewithinternet. Попробуйте обходной путь, что страница предлагает:

sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5 

(Вы, возможно, потребуется поставить эту конфигурацию в /etc/sysctl.conf, чтобы сделать его постоянным)

+0

Спасибо, я добавил, что и я, кажется, не испытывают больше потеря связи при запуске, но иногда это происходит во время записи, и я уверен, что там нет простоя. Мне нужно будет продолжить исследование, но я также могу воспользоваться лимитом одновременных подключений, указанными здесь. Https://cloud.google.com/sql/faq#sizeqps –

+0

Пределы подключения действуют только при запуске соединений. Другие возможные причины сброса соединений во время запроса документируются по адресу http://dev.mysql.com/doc/refman/5.5/ru/error-lost-connection.html. Если это очень редко, это может быть связано также с перезапущенными системой перезапусками вашего экземпляра Cloud SQL. – David

 Смежные вопросы

  • Нет связанных вопросов^_^