- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
История и простой вопрос в формате «просто поговорить» на нубском уровне. Пусть тут на форуме будут эти ключевички ))
Debian7. Начал падать mysql. Просто так: нагрузки особой нет, в логах ничего особенного. В какой-то момент просто начинает отказывать в соединении. Посещаемость сайта около 20-30К в сутки, настроена репликация, это мастер. Работал до этого месяцы/годы, и вдруг именно сейчас начал так как-бы падать. Перезагрузка mysql, после этого работает нормально от часа до трёх.
Почему как-бы: установлен Monit, он проблему не улавливает. Вот если сделать ошибку в my.cnf и mysql не запустится - monit будет пытаться перезапустить. Т.е. процесс mysql не выгружается, но нормально работать перестаёт.
В логе только куча предупреждений о том, что binlog-format херовый, но это давно, с самого начала и ранее не мешало. Вот таких: [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Ну хорошо, поменял на binlog-format=ROW. Нет, не оно, ворнинги пропали, падения остались.
Прочитал на заграничных форумах, что такие падения могут быть от слишком высоких лимитов в настройках базы. Пишут, типа линукс выделяет память неглядя за пределами физической. Памяти на сервере 32G, htop редко показывает выше 15-20%. Стояло по гигу-полтора на кеш таблиц, запросов, сотритровок. Уменьшил до "приличных" цифр. Нет, тоже не оно.
Изучил медленные запросы и запросы без индексов, что-то подправил, количество в медленных сократилось раза в 2. Полезно в любом случае, но на падения влияния не оказало.
И вот сегодня утром, раскомментировал строку max-connections и вписал туда 1024. 8 часов, полёт нормальный. Наблюдаю. Чё, серьёзно? Mysql не умеет ставить запросы в очередь или надо было в первую очередь лезть в это?
nocomments, посмотрите что у вас неправильно закрывает соединения с базой данных или держит их. 1024 при неправильных остальных настройках так же может быть опасно.
Еще то, что что-то держит соединение с базой может быть признаком какой-то другой проблемы. Для выяснения причин нужно смотреть код и поведение сервера/графики, просто так сказать что-то более детальное сложно.
Запустите mysqltuner - будет виднее.
с жесткими дисками все в порядке?
max-connections и вписал туда 1024. 8 часов, полёт нормальный. Наблюдаю. Чё, серьёзно? Mysql не умеет ставить запросы в очередь
Как раз таки это и есть очередь, и её длинна :)
Смотрите активные запросы mysql (# mysqladmin processlist )
Убедитесь скорей всего в том, что Ваше приложение не закрывает соединение с базой, от чего очередь накапливается до того момента, пока количество активных подключений не превысит максимальное значение "max-connections"
Также в топике верно подметили, что нужно искать причину, а не повышать лимиты, ибо когда память кончится и сервер уйдёт в swap, будет ситуация не лучше, чем ошибка подключения к mysql
А если это OpenVZ контейнер, то и вовсе OOM Killer прибъёт процесс mysql, от чего могут и таблички "попортиться"
Диски окей. В итоге так и нет больше ошибок.