Koneksi gagal

8

Mysql error.log menunjukkan

[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)

Sementara pihak klien mendapatkan:

Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Saya membaca manual mysql tentang ini, dan banyak utas lainnya. Jadi saya mengubah beberapa nilai di my.cnf

max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G

Melihat log permintaan koneksi yang terputus:

22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query     SET SESSION sql_mode=''
22400 Query     SET NAMES utf8
22400 Init DB   dbname
22400 Init DB   dbname

Memeriksa status tabel. bind-address adalah IP server tetapi saya harus dapat terhubung dari luar.

Aborted_connects is 196
PiNomor
sumber
Bisakah Anda memeriksa kualitas koneksi antara dua host? dasar 100 ping harus dilakukan ..
melsayed

Jawaban:

4

Didasarkan pada data yang terbatas, saya ingin tahu apakah Anda memiliki firewall antara klien dan server MySQL (mungkin ada di host secara langsung) yang mengizinkan 3306 ke server MySQL tetapi memblokir paket respons terhadap permintaan SYN awal kembali.

Anda mungkin ingin melakukan dump paket di kedua sisi untuk mengetahui apa yang terjadi di sisi TCP dan / atau memeriksa firewall apa pun yang ada di antara kedua sisi.

Matthew Ife
sumber
Terima kasih. Data apa yang bisa saya berikan untuk menghapus ini? Saya tidak memiliki firewall di ujung saya, tidak yakin tentang sisi lain. Sebagian besar koneksi berfungsi, jadi saya kira itu bukan firewall. Saya mencoba paket dumping tetapi ada banyak lalu lintas dan masalahnya hanya beberapa kali sehari. Saya gagal mendefinisikan filter yang hanya menangkap paket yang saya butuhkan.
PiTheNumber
4

Saya menduga ini bukan masalah mysql.

Pastikan lapisan transport OK. Bisakah Anda menggunakan koneksi tcp telnet [db_server] 3306?

Apakah klien dan server Anda sepakat tentang apakah koneksi harus dienkripsi SSL?

Saya tidak bisa memikirkan banyak situasi di mana saya ingin menjalankan koneksi mysql melalui internet publik, yang saya curigai adalah apa yang Anda maksud dengan 'dapat terhubung dari luar'. Jika tidak dienkripsi, ini adalah risiko keamanan yang sangat besar, dan overhead pengaturan SSL untuk setiap koneksi terlalu tinggi untuk sebagian besar penggunaan. Anda mungkin ingin melihat menggunakan semacam terowongan terenkripsi persisten.

mc0e
sumber
Telnet terhubung dan sebagian besar koneksi berfungsi dengan baik hanya dari waktu ke waktu masalah ini muncul. Ya, itu koneksi melalui internet publik. Saya ingin memiliki enkripsi di sini tetapi saya tidak mengontrol ujung lainnya. Pokoknya saya harus menstabilkan koneksi dulu.
PiTheNumber