Что такое ошибка Connection Timeout?

Ошибка Connection Timeout в MySQL означает, что клиент не может установить соединение с сервером в течение заданного времени.

Причины возникновения

  • Слишком много активных подключений
  • Медленное сетевое соединение
  • Неправильные настройки таймаутов
  • Проблемы с DNS разрешением
  • Перегрузка сервера MySQL

Как отладить ошибку

  1. Проверь количество подключений - используй SHOW PROCESSLIST
  2. Проверь настройки таймаутов - убедись в правильности значений
  3. Проверь сетевое соединение - тестируй ping и telnet
  4. Проверь нагрузку на сервер - мониторь CPU и память

Как исправить ошибку

1. Настрой connection pool

 1# В my.cnf или my.ini
 2[mysqld]
 3max_connections = 200
 4wait_timeout = 28800
 5interactive_timeout = 28800
 6connect_timeout = 10
 7
 8# Для клиентов
 9[mysql]
10connect_timeout = 10

2. Оптимизируй настройки подключений

1# Проверь текущие подключения
2SHOW PROCESSLIST;
3
4# Убей зависшие подключения
5KILL connection_id;
6
7# Проверь лимиты
8SHOW VARIABLES LIKE 'max_connections';
9SHOW VARIABLES LIKE 'wait_timeout';

3. Настрой connection pooling в приложении

 1# Python с SQLAlchemy
 2from sqlalchemy import create_engine
 3
 4engine = create_engine(
 5    'mysql+pymysql://user:pass@host/db',
 6    pool_size=10,
 7    max_overflow=20,
 8    pool_timeout=30,
 9    pool_recycle=3600
10)

4. Мониторь и оптимизируй запросы

1# Включи slow query log
2SET GLOBAL slow_query_log = 'ON';
3SET GLOBAL long_query_time = 2;
4
5# Проверь медленные запросы
6SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;

Как мониторить подобные ошибки

  • Мониторь количество активных подключений
  • Настрой алерты на превышение лимитов
  • Логируй медленные запросы
  • Используй мониторинг производительности

FAQ

В: Как определить оптимальное количество подключений?

О: Мониторь использование подключений и установи лимит на 80% от максимального значения.

В: Что делать с зависшими подключениями?

О: Используй KILL для завершения зависших подключений и настрой автоматический мониторинг.

В: Как оптимизировать connection pool?

О: Настрой размер пула, время жизни подключений и обработку ошибок.

Лучшие практики

  • Используй connection pooling
  • Мониторь количество подключений
  • Оптимизируй запросы
  • Настрой правильные таймауты
  • Используй мониторинг и алерты