Slow connection to MySQL in Docker

By Dmitry Kann 1 min read This post in Russian 0339

My current project makes use of the MySQL database, which runs in a Docker container.

At a certain moment connecting to the database became excruciatingly slow, taking tens of seconds to establish a single connection. After that everything would work as expected.

The application opens a connection some hundred times, so the startup time had become really unacceptable.

I’ve spent a lot of time hunting that down, and then even more time looking for a solution as I failed to find any on StackOverflow. But finally I’ve solved this.

The culprit was, as I initially thought, the DNS lookup: the database was trying to determine the name of the host that is connecting to it, and the DNS was slow. But in my use case it was a pretty useless operation.

First I tried to pass the --dns=127.0.0.1 to Docker, but it wouldn’t improve the situation.

What did help was MySQL’s flag --skip-name-resolve: the issue disappeared and making a connection takes milliseconds now.

A container can be started with something like:

docker run -e MYSQL_ROOT_PASSWORD=secret mysql:5.7.16 --skip-name-resolve

I hope it helps someone struggling with the same issue. ■

See also

Post image
Tutorial: development with Yii/PHP/MySQL using Docker
Post image
Self-hosting Commento with Docker Compose
Post image
Managing Git projects on a mass scale
Post image
Docker Indicator 0.1.0
Post image
Tuning Ubuntu for SSD
Post image
How-to: Multiplicity in Gimp

Comments

Share