ข้อผิดพลาดในการเชื่อมต่อกับฐานข้อมูล mysql


9

แอปพลิเคชันของฉันต้องเชื่อมต่อกับฐานข้อมูล mysql บนเครื่องอื่นเป็นประจำ อย่างไรก็ตามฉันพบข้อผิดพลาดบ่อยครั้งในการเชื่อมต่อ; ในที่สุดฉันก็สามารถเชื่อมต่อได้ แต่หลังจากลองหลายครั้ง ข้อความแสดงข้อผิดพลาดที่ฉันได้รับคือ:

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

ฉันได้อ่านข้อมูลที่นี่: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.htmlและยังแสดงความคิดเห็นต่อข้อผิดพลาดhttp://bugs.mysql.com/bug .php?

มีจำนวนการเชื่อมต่อที่ถูกยกเลิกค่อนข้างมากตามที่คุณเห็น:

mysql> แสดงสถานะทั่วโลกเช่น 'Aborted_connects';
+ ------------------ + ------- +
| Variable_name | ค่า |
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

ฉันเพิ่มการหมดเวลาจาก 5 เป็น 15 วินาที:

mysql> แสดงตัวแปรเช่น 'connect_timeout';
+ ----------------- + ------- +
| Variable_name | ค่า |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

แต่สิ่งนี้ไม่ได้ช่วย ข้อเสนอแนะวิธีการแก้ปัญหานี้? มันทำให้การทำงานของฐานข้อมูลช้าลงอย่างน่ากลัวเมื่อมันโดยเฉลี่ยต้องพยายามเชื่อมต่อ 5 ครั้งก่อนที่มันจะทำงาน

ฉันยังไม่ได้พยายามเปิดการเชื่อมต่อตลอดอายุการใช้งานของแอปพลิเคชันจะดีกว่าไหม ฉันจะป้องกันไม่ให้การเชื่อมต่อปิดได้อย่างไร

หากช่วยให้คอมพิวเตอร์ที่มีปัญหาคือ Windows 7 32 บิตในขณะที่เซิร์ฟเวอร์ mysql อยู่บน Debian Linux


ฉันรู้ว่านี่เป็นผ้าพันแผลเท่านั้น แต่ URL รายงานข้อผิดพลาดระบุว่า: "ฉันได้แก้ไขปัญหาโดยเพิ่มตัวแปรส่วนกลางของ connect_timeout เป็น 30 วินาที" คุณต้องการลองใช้ค่าที่สูงขึ้นหรือไม่?
— JoseK

1
ความสะดวกสบายเยือกเย็น แต่นี่เป็นคำถามที่เขียนได้ดี ทำตามบทความ Eric S. Raymond ที่ยอดเยี่ยม ... +1 ถึงคุณและขอให้โชคดี
— gWaldo

@JoseK แน่นอนฉันสามารถลองได้ แต่ฉันสงสัยว่ามันจะสร้างความแตกต่างอย่างมากเนื่องจากฉันไม่เห็นการปรับปรุงโดยเพิ่มจาก 5 เป็น 15
— Zitrax

นี่เป็นหนึ่งในตัวแปรที่ไม่มีการ จำกัด หรือไม่ถ้าตั้งค่าไว้ที่ 0
— pjmorse

1
คุณแน่ใจหรือว่าไม่มีปัญหาการเชื่อมต่อระหว่างเครื่องบางทีเป็นปัญหาเครือข่าย
— วอร์เนอร์

คำตอบ:


2

ดูรายละเอียดข้อผิดพลาดทั้งหมดในรายงานที่ฉันสงสัยว่ามีปัญหาด้านเครือข่ายหรือลูกค้าที่นี่ มีบางอย่างที่ทำให้เกิดความเสียหายหรือเพิ่มความล่าช้าในข้อมูล mysql มากเกินไป

ในเครือข่ายที่ชัดเจนทำการติดตามแบบ wireshark และตรวจสอบว่าบทสนทนานั้นเป็นอย่างไร ตรวจสอบให้แน่ใจว่าไม่มีการปรับสภาพการจราจรเกิดขึ้นทุกที่ ดูเหมือนว่าปัญหา 64 บิตเท่านั้นดังนั้นให้ตรวจสอบ 32 บิตบิลด์เพื่อให้แน่ใจว่าเป็นปัญหาเดียวกัน ตรวจสอบกล่อง Windows XP M $ ได้ทำสิ่งที่ขี้ขลาดไปยังเครือข่ายสแต็คใน Vista ซึ่งทำให้มันดูด - bit เวลา! เราไม่มีจุดสิ้นสุดของปัญหาเครือข่ายกับเครื่อง Vista และ Win7!

หากคุณจัดการร่องรอย wireshark โปรด pastebin และวางลิงก์ตามที่เราทุกคนต้องการดูฉันคิดว่า


คุณหมายถึงอะไรกับ 'ดูเหมือนว่าปัญหา 64 บิต'? นี่คือการติดตั้งแบบ 32 บิต และขอโทษที่ฉันพูดถึง Vista นี่คือ Win7 แก้ไขคำอธิบาย
— Zitrax

ฉันไม่คุ้นเคยกับการดีบักด้วย wireshark แต่บางสิ่งที่แปลกสำหรับฉันมีแพ็กเก็ต RST ที่ทำเครื่องหมายสีแดงสองสามตัวและการส่งผ่าน TCP ซ้ำและเวลาของแพ็กเก็ตบางส่วนนั้นเป็นลบเช่น -257.3 วินาที
— Zitrax

คุณสามารถใช้สวิตช์อื่นได้เลยและทดสอบอีกครั้งได้ไหม ทำให้แตกต่างกันถ้าคุณมีหรือไม่ หากคุณสามารถ pastebin หรือ zip และทำให้การถ่ายโอนข้อมูล wireshark เราสามารถดู ...
— Khushil

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.