This article mainly shares with you how to use skip-name-resolve in MySql to solve the problem of slow external network link client. MySQL built on Tencent Cloud is always very slow when accessed by Navicat on the development computer. It turns out that MySQL will perform domain name resolution on the requested address, and the development computer does not have a domain name, so it will be extremely slow.
Mysql built on Tencent Cloud is always very slow when accessed using navicat on the development computer. It turns out that Mysql will perform domain name resolution on the requested address. The development computer does not have a domain name, so it will cause Extremely slow, use the following to solve it
[mysqld] skip-name-resolve skip-grant-tables
Official explanation
How MySQL
uses DNS When a new thread connects to mysqld, mysqld will
spawn a new thread to handle the request. This thread will first check
if the hostname is in the hostname cache. If not the thread will call
gethostbyaddr_r() and gethostbyname_r() to resolve the hostname. If
the operating system doesn't support the above thread-safe calls, the
thread will lock a mutex and call gethostbyaddr() and gethostbyname()
instead. Note that in this case no other thread can resolve other
hostnames that is not in the hostname cache until the first thread is
ready. You can disable DNS host lookup by starting mysqld with
–skip-name-resolve. In this case you can however only use IP names in
the MySQL privilege tables. If you have a very slow DNS and many
hosts, you can get more performance by either disabling DNS lookop
with –skip-name-resolve or by increasing the HOST_CACHE_SIZE define
(default: 128) and recompile mysqld. You can disable the hostname
cache with –skip-host-cache. You can clear the hostname cache with
FLUSH HOSTS or mysqladmin flush-hosts. If you don't want to allow
connections over TCP/IP, you can do this by starting mysqld with
–skip-networking.
According to the documentation, if your mysql host queries DNS very Slow or there are many client hosts, the connection will be very slow. Since our development machine cannot connect to the external network, DNS resolution is impossible to complete, so we understand why the connection is so slow. At the same time, please note that after adding this configuration parameter, the host field in the mysql authorization table cannot use domain names but only IP addresses, because this is the result of prohibiting domain name resolution.
Related recommendations:
python http long connection client example tutorial
Solution to the problem of MySQL DNS anti-resolution being too slow Method
How to solve the problem of slow mysql connection_MySQL
The above is the detailed content of MySql uses skip-name-resolve to solve the problem that the external network connection client is too slow.. For more information, please follow other related articles on the PHP Chinese website!