На моём текущем проекте я разрабатываю приложение, использующее MySQL в качестве базы данных. Сама база данных крутится в Docker-контейнере, что очень удобно.
В какой-то момент приложение стало запускаться безумно долго, проверка показала, что каждое подключение к серверу MySQL стало занимать чуть не полминуты. Учитывая, что соединение устанавливалось несколько сотен раз, запуск приложения стал чуть-чуть слишком медленным.
После этого я потратил кучу времени, чтобы найти решение, и даже StackOverflow не мог мне помочь. Но в конце концов разобрался.
Всё дело, как я изначально, предполагал, в DNS: база данных пытается определить, какой хост к ней подключается. В моём случае это совершенно бессмысленная операция. Использование флага Докера --dns=127.0.0.1
не помогало.
Помог флаг самой MySQL --skip-name-resolve
: проблема исчезла безвозвратно и соединение устанавливается в считанные миллисекунды.
Запускать контейнер можно примерно так:
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:5.7.16 --skip-name-resolve
Не благодарите. ■
Комментарии