Koneksi jarak jauh ke server MySQL membutuhkan waktu sangat lama


10

Saya memiliki server MySQL 5.0.75 yang berjalan pada notebook Linux saya yang ingin saya sambungkan dari komputer lain di jaringan lokal.

Koneksi ini membutuhkan 5-6 detik:

mysql -h 172.22.65.101 -u myuser -p123

Ping ke host MySQL:

PING 172.22.65.101 (172.22.65.101) 56(84) bytes of data.
64 bytes from 172.22.65.101: icmp_seq=1 ttl=64 time=0.799 ms
64 bytes from 172.22.65.101: icmp_seq=2 ttl=64 time=0.000 ms
64 bytes from 172.22.65.101: icmp_seq=3 ttl=64 time=6.43 ms
64 bytes from 172.22.65.101: icmp_seq=4 ttl=64 time=0.000 ms
64 bytes from 172.22.65.101: icmp_seq=5 ttl=64 time=3.81 ms
64 bytes from 172.22.65.101: icmp_seq=6 ttl=64 time=0.706 ms
^C
--- 172.22.65.101 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5027ms
rtt min/avg/max/mdev = 0.000/1.959/6.437/2.383 ms

Ada Ide? Ketika saya memonitor koneksi dengan SHOW PROCESSLIST; pada host MySQL, saya dapat melihat bahwa perintahnya adalah "terhubung" dan pengguna adalah "pengguna tidak terauthentikasi". Ini berlangsung sampai koneksi dibuat. (Pengguna kemudian ditampilkan sebagai "pengguna saya" dan perintahnya adalah "tidur")

Saya seorang pengembang dan membutuhkan saran Anda tentang cara menemukan hambatan!

My.cnf saya di host:

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice  = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
skip-federated

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[isamchk]
key_buffer = 16M

Klien:

mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

Server:

mysql  Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (i486) using readline 5.2

Jawaban:


17

Mungkin Anda tertinggal dalam upaya untuk mengambil dan memverifikasi DNS terbalik dari host yang terhubung. Anda dapat menguji ini dengan menyalakan skip_name_resolvedi bagian my.cnf server [mysqld].

Jika memang demikian halnya (ditunjukkan oleh parameter yang menghilangkan penundaan), maka Anda dapat menyelesaikan masalah dengan menyiapkan DNS dengan benar (maju dan mundur) untuk klien, atau dengan berjalan skip_name_resolvesepanjang waktu (yang berarti Anda dapat dapat menggunakan nama host di GRANTtabel Anda ).


Itu memperbaikinya! Saya mendefinisikan skip_name_resolve di my.cnf dari host MySQL saya, me-restart MySQL dan masalahnya teratasi. Aku berhutang bir padamu. :)
Lennart

Senang bisa membantu. :)
chaos

1
Terima kasih banyak! hanya untuk memperjelas (kalau-kalau ada yang kacau seperti saya), itu hanya "skip_name_resolve" pada satu baris, bukan "skip_name_resolve = 1" atau apa pun ... kalau tidak layanan Anda tidak akan mulai!
James Crowley
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.