Kesalahan koneksi ke database mysql

9

Aplikasi saya perlu melakukan koneksi yang cukup sering ke database mysql di komputer lain. Namun saya sering mendapatkan kesalahan pada koneksi; Saya biasanya bisa terhubung tetapi setelah banyak percobaan. Pesan kesalahan yang saya dapatkan adalah:

Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2

Saya telah membaca informasi di sini: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html dan juga komentar untuk bug http://bugs.mysql.com/bug .php? id = 28359 .

Ada cukup banyak koneksi yang dibatalkan seperti yang Anda lihat:

mysql> TAMPILKAN STATUS GLOBAL SEPERTI 'Aborted_connects';
+ ------------------ + ------- +
| Variable_name | Nilai |
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

Saya menambah batas waktu dari 5 menjadi 15 detik:

mysql> tampilkan variabel seperti 'connect_timeout';
+ ----------------- + ------- +
| Variable_name | Nilai |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

tetapi ini tidak membantu. Ada saran bagaimana cara men-debug ini? Itu membuat interaksi database sangat lambat ketika rata-rata harus mencoba menghubungkan 5 kali sebelum berfungsi.

Saya belum mencoba untuk menjaga koneksi tetap terbuka untuk masa aplikasi, apakah itu lebih baik? Bagaimana cara mencegah koneksi menutup?

Jika itu membantu komputer dengan masalah adalah Windows 7 32-bit, sedangkan server mysql ada di Debian Linux.

Zitrax
sumber
Saya tahu ini hanya balutan tetapi URL laporan kutu menyatakan: "Saya telah mengatasi masalah ini dengan meningkatkan variabel global connect_timeout menjadi 30 detik." Apakah Anda ingin mencoba nilai yang lebih tinggi?
JoseK
1
Kenyamanan yang dingin, tetapi ini adalah pertanyaan yang ditulis dengan baik. Sangat baik mengikuti artikel Eric S. Raymond ... +1 untuk Anda, dan semoga sukses.
gWaldo
@ JoseK tentu saja saya dapat mencoba tetapi saya ragu itu akan membuat banyak perbedaan karena saya melihat tidak ada peningkatan dengan meningkatkan dari 5 menjadi 15.
Zitrax
Apakah ini salah satu variabel yang tidak menetapkan batas jika nilainya ditetapkan pada 0?
pjmorse
1
Apakah Anda yakin tidak ada masalah konektivitas antara mesin, mungkin masalah jaringan?
Warner

Jawaban:

2

Melihat semua rincian bug dan laporan saya menduga ada masalah jaringan atau sisi klien di sini. Sesuatu rusak atau menambah terlalu banyak latensi ke data mysql.

Di jaringan yang jelas, lakukan jejak wireshark dan periksa seperti apa percakapan itu. Pastikan tidak ada pembentukan lalu lintas yang terjadi di mana pun. Sepertinya masalah 64bit saja jadi periksa 32bit build hanya untuk memastikan itu masalah yang sama. Periksa kotak Windows XP - M $ melakukan beberapa hal funky ke tumpukan jaringan di Vista yang membuatnya payah - sedikit waktu! Kami tidak memiliki masalah jaringan dengan mesin Vista dan Win7!

Jika Anda mengelola jejak wireshark, tolong tempelkan dan pasang tautan seperti yang kita semua suka, saya pikir.

Khushil
sumber
Apa yang Anda maksud dengan 'sepertinya masalah 64bit'? Ini adalah instalasi 32-bit. Dan maaf saya sebutkan Vista, ini Win7, deskripsi dikoreksi.
Zitrax
Saya tidak terlalu familiar dalam debugging dengan wireshark. Tetapi beberapa hal terlihat aneh bagi saya, ada beberapa paket RST yang ditandai dan Transmisi ulang TCP, dan waktu beberapa paket negatif, seperti -257,3 detik.
Zitrax
dapatkah Anda menggunakan sakelar lain sama sekali dan uji ulang silakan. berbeda buat apa kalau kamu punya? jika Anda dapat menempelkannya atau membuka zip dan menyediakan wireshark dump, kita bisa melihatnya ...
Khushil