За последние 24 часа нас посетили 17165 программистов и 1686 роботов. Сейчас ищут 1163 программиста ...

Кратковременное появление Database connection error (2)...

Тема в разделе "MySQL", создана пользователем eos12, 17 июн 2015.

  1. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Тестирую сайт под нагрузкой: запускаю десяток параллельных процессов, которые обращаются к разным страницам сайта.
    Еще десяток процессов обращаются к API сайтов партнеров и записывают полученные данные в локальную базу (несколько Кб раз в секунду каждый).
    Отслеживаю состояние через список процессов phpmyadmin и смотрю загрузку железа через top. В какой-то момент в phpmyadmin начинает увеличиваться количество строк со статусом sleep, доходит до 10-15 и пседоюзеры начинают получать Database connection error (2): Could not connect to MySQL вместо страниц сайта.
    Ошибка длится несколько секунд и все нормализуется.
    При этом загрузка ЦП не превышает 18%, свободно 4-6Г оперативки.
    Выделенный сервер: Apache 2.2.22 (Debian) / MySQL 5.5.38

    Понимаю, что что-то в настройках напутано - подскажите куда рыть, пжлста.

    P.S. Гуглил. Отличие моей ситуации от повсеместной в том, что у меня ошибка длится секунды, а без искусственной нагрузки все сайты работают нормально (естественная нагрузка 5-10 одновременных пользователя).
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Re: Кратковременное появление Database connection error (2).

    Ты устроил себе DDOS и спрашивешь, почему у тебя сервак ведет себя странно, как будто под DDOS'ом? :)
     
  3. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кратковременное появление Database connection error (2).

    у вас лимитов на конекты нет в мускуле?
     
  4. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Re: Кратковременное появление Database connection error (2).

    Ну... разве 5-10 одновременно запрашиваемых страниц это DDOS...
    Думаю, что это очень даже невысокая нагрузка для сайтов. В общем-то это подтверждается загрузкой железа. Скорее всего есть очень банальное решение, но я его не знаю ))

    max_connections = 100. Насколько я в курсе, при возникновении проблем с лимитами возникает другая ошибка..
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Re: Кратковременное появление Database connection error (2).

    5-10 за какой интервал? За сотую долю секунды? В секунду сколько вы запросов шлете?
    Такое чувство, что сервер под нагрузкой сначала мягко отрабатывает очередь запросов, уводя их в sleep, а потом, когда очередь переполняется, начинаются банальные отказы.

    У многих систем есть подобные механизмы борьбы.

    "Загрузка процессора", к слову, тоже нифига не показатель. Раз на то пошло, это, на деле не "загрузка", не потраченные мощности, а то, сколько времени процессора зарезервировано планировщиком в данный момент. Приложение может уйти в своп при минимальной нагрузке на процессор, например.
     
  6. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Re: Кратковременное появление Database connection error (2).

    страница в нормальном режиме генерится за 300-400мс. каждый процесс получает страницу, сразу же запрашивает следующую. Получается что в каждый момент времени генерится 10 страниц.
    Понятно что что-то переполняется. Вопрос что. Сижу сейчас смотрю в iotop. Максимальная нагрузка на запись 7М/c. Вроде бы это мелочи для SSD.
    Еще раз повторюсь: в момент, когда возникает ошибка, наблюдаемые параметры таковы:
    загрузка ЦП 17%
    Свободно памяти 5Г (до свопа далеко)
    Загрузка SSD на запись 7М/c
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Re: Кратковременное появление Database connection error (2).

    Почти полсекунды? Тяжеловато, вкрай тяжеловато. Сколько запросов при этом в бд делается? И да, вы уверены, что следующий запрос приходит только после получения ответа сервера?
    Но всего на одном ядре из нескольких, верно?
     
  9. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Re: Кратковременное появление Database connection error (2).

    Ага.

    Добавлено спустя 7 минут 40 секунд:
    Re: Кратковременное появление Database connection error (2)...
    примерно 100 в среднем.
    В том, что запрос на страницу генерится только после получения предыдущей - уверен.
    не понял вопроса. 8 ядер. 17% загрузки - средняя. некоторые ядра загружены под завязку. ну как это обычно в top - то одно то другое.

    Добавлено спустя 26 минут 45 секунд:
    Re: Кратковременное появление Database connection error (2)...
    Господа, попробую перефразировать свой исходный вопрос:
    от чего может возникать Database connection error?
    1) Из-за неправильных параметров типа пароля и тд. Не мой случай. Если не гружу сам, то работает с теми же настройками.

    2) как мне уже дважды намекнули - из-за параметров типа max_connection. (поставил 300 - та же хрень. чтоб отсечь эту причину надо бы посмотреть максимальное количество одновременных подключений. Как это можно сделать? )
    может еще есть какие-то критические параметры в настройках MySQL? Кто-нить сталкивался?

    3) Может из-за ограниченной пропускной способности моего SSD-диска? Я смотрю в iotop. вроде сверхнагрузок не вижу. Но может если почаще посмотреть то и увидеть что-то можно будет. Как можно сделать лог загрузки дисковой подсистемы с хорошей дискретизацией (к примеру 100мс)?

    4) есть еще какие-нить причины верхнего уровня?
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Re: Кратковременное появление Database connection error (2).

    А может ты видишь ошибку, которую показывает фреймворк, а не БД ? "Database connection error (2)" это вроде бы говорит Joomla, а не MySQL. :)
    Надо добыть родное майсиквельное сообщение об ошибке.

    Добавлено спустя 13 минут 54 секунды:
    Re: Кратковременное появление Database connection error (2)...
    Еще есть параметр max_user_connections. http://dev.mysql.com/doc/refman/5.0/en/user-resources.html
     
  11. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Re: Кратковременное появление Database connection error (2).

    Опп-па. Не знал. спасибо.

    Гляну.

    Правда я вчера психанул и стал править в my.cnf подряд все параметры, какие показались подозрительными исходя из моего субъективного понимания процесса. После этого коврового причесывания и полного ребута сервера ошибка железно пропала даже под удвоенной нагрузкой. На днях верну исходное состояние и буду менять по шагам.
     
  12. eos12

    eos12 Новичок

    С нами с:
    17 июн 2015
    Сообщения:
    6
    Симпатии:
    0
    Re: Кратковременное появление Database connection error (2).

    Резюме для поисковиков.
    В моем случае все упиралось в max_connections. похоже, в какой-то момент я исправил этот параметр в конфиге, но не ребутнул сервер.
    ставлю 50 - однозначное проявление проблемы как в исходном посте.
    Ставлю 300 - держит нагрузку вплоть до 100% загрузки ЦП.

    С благодарностью к artoodetoo, eos12 ))