sim3x: Сделал тест - все ок.
Но сайт и так достаточно нагружен, одних только зареганных юзеров 60к.
И там очень много в memcahed и в redis закешированно.
Семь дней продержалось. Семь дней "ни единого обрыва", а сегодня опять двадцать пять.
Все тоже самое в логах. Хотя 7 дней, конечно, прогресс. Раньше 2-3 дня было.
В 2015-05-17 06:48:52 зафиксирована ошибка:
sqlalchemy.exc.InterfaceError: (InterfaceError) 2013: Lost connection
И в это же самое время в логах майсквеля:
150517 6:48:47 [Warning] Aborted connection 65 to db: 'db_name' user: 'db_user' host: 'localhost' (Unknown error)
sim3x: Спасибо.
Установил уровень логирования в дебаг.
Было:
MariaDB [(none)]> show global variables like '%warn%' ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings | 1 |
| sql_warnings | OFF |
+---------------+-------+
2 rows in set (0.00 sec)
Стало:
MariaDB [(none)]> show global variables like '%warn%' ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings | 2 |
| sql_warnings | OFF |
+---------------+-------+
2 rows in set (0.00 sec)
===============================
После того как установил новый левел, пришлось сделать рестарт mariadb.
За эти доли секунды пока рестартился mysql нападало тьма сообщений от flask.
sqlalchemy.exc.InterfaceError: (InterfaceError) 2003: Can't connect to MySQL
Но, что интересно код ошибки и сама ошибка немного другая.
Mikhail: Тут все просто. Можно каждый раз при каждом запросе выполнять соединение с базой.
Соединились с базой, забрали через select что-нужно и закрыли соединение. Так в большинстве случаев работает PHP. Ясное дело такой ошибки в этом случае не будет.
В Python и sqlalchemy считают, что это накладно каждый раз соединятся и закрывать. И держат соединение до победного конца. А потом например mysql рестартанул. Соединение во flask перестало работать. Через какие-то секунды flask установил новое соединение.
Но именно в эти секунды и происходит та ошибка, которую я привел.
MySQL - не падает сам по себе. Он живой.
Просто на какие-то доли секунды теряется соединение.
sqlalchemy делает реконнект и все работает как раньше.
Но именно в момент рестарта и реконекта бывают вот такие ошибки как я привел в своем вопросе.