Lỗi kết nối với cơ sở dữ liệu mysql


9

Ứng dụng của tôi cần thực hiện kết nối khá thường xuyên với cơ sở dữ liệu mysql trên máy khác. Tuy nhiên tôi nhận được lỗi thường xuyên về kết nối; Tôi thường có thể kết nối nhưng sau nhiều lần thử lại. Thông báo lỗi tôi nhận được là:

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

Tôi đã đọc thông tin ở đây: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html và cả những bình luận về lỗi http://bugs.mysql.com/bug .php? id = 28359 .

Có khá nhiều kết nối bị hủy bỏ như bạn có thể thấy:

mysql HIỂN THỊ TÌNH TRẠNG TOÀN CẦU THÍCH 'Abort_connects';
+ ------------------ + ------- +
| Biến_ame | Giá trị |
+ ------------------ + ------- +
| Abort_connects | 2540 |
+ ------------------ + ------- +

Tôi đã tăng thời gian chờ từ 5 đến 15 giây:

mysql hiển thị các biến như 'connect_timeout';
+ ----------------- + ------- +
| Biến_ame | Giá trị |
+ ----------------- + ------- +
| kết nối_timeout | 15 |
+ ----------------- + ------- +

nhưng điều này đã không giúp được gì. Bất kỳ đề xuất làm thế nào để gỡ lỗi này? Nó làm cho tương tác cơ sở dữ liệu chậm khủng khiếp khi trung bình phải cố gắng kết nối 5 lần trước khi nó hoạt động.

Tôi vẫn chưa cố gắng duy trì kết nối mở trong suốt vòng đời của ứng dụng, điều đó có tốt hơn không? Làm cách nào để ngăn kết nối đóng lại?

Nếu nó giúp máy tính giải quyết vấn đề là Windows 7 32 bit, trong khi máy chủ mysql có trên Debian Linux.


Tôi biết đây chỉ là một miếng băng nhưng URL báo cáo lỗi có ghi: "Tôi đã khắc phục sự cố bằng cách tăng biến toàn cầu connect_timeout lên 30 giây." Bạn có muốn thử một giá trị cao hơn?
JoseK

1
Lạnh thoải mái, nhưng đây là một câu hỏi được viết tốt. Tuyệt vời sau bài viết của Eric S. Raymond ... +1 cho bạn, và chúc may mắn.
gWaldo

@JoseK tất nhiên tôi có thể thử nhưng tôi nghi ngờ nó sẽ tạo ra nhiều khác biệt vì tôi thấy không có sự cải thiện nào bằng cách tăng từ 5 lên 15.
Zitrax

Đây có phải là một trong những biến không đặt giới hạn nếu giá trị được đặt thành 0 không?
pjmorse

1
Bạn có tích cực không có vấn đề kết nối giữa các máy, có lẽ là vấn đề mạng?
Warner

Câu trả lời:


2

Nhìn qua tất cả các chi tiết lỗi một báo cáo tôi nghi ngờ có vấn đề về phía mạng hoặc máy khách ở đây. Một cái gì đó hoặc là làm hỏng hoặc thêm quá nhiều độ trễ cho dữ liệu mysql.

Trên một mạng rõ ràng, thực hiện theo dõi wireshark và kiểm tra xem cuộc hội thoại này như thế nào. Đảm bảo không có hình dạng giao thông đang diễn ra ở bất cứ đâu. Có vẻ như chỉ có vấn đề 64 bit, vì vậy hãy kiểm tra bản dựng 32 bit chỉ để đảm bảo đó là vấn đề tương tự. Kiểm tra hộp Windows XP - M $ đã thực hiện một số nội dung thú vị cho ngăn xếp mạng trên Vista khiến nó mất thời gian! Chúng tôi không có vấn đề kết nối mạng với máy Vista và Win7!

Nếu bạn quản lý dấu vết của wireshark, vui lòng dán và liên kết như tất cả chúng ta giống như một cái nhìn tôi nghĩ.


Bạn có ý nghĩa gì với 'dường như là vấn đề 64 bit'? Đây là bản cài đặt 32 bit. Và xin lỗi tôi đã đề cập đến Vista, đây là Win7, mô tả đã được sửa.
Zitrax

Tôi không quen thuộc lắm trong việc gỡ lỗi với wireshark. Nhưng một vài điều có vẻ kỳ lạ đối với tôi, có một vài gói RST được định nghĩa lại và Truyền lại TCP và thời gian của một số gói là âm, như -257,3 giây.
Zitrax

bạn có thể sử dụng một công tắc khác ở tất cả và kiểm tra lại xin vui lòng. khác nhau nếu bạn có một? nếu bạn có thể pastebin hoặc zip và làm cho bãi rác wireshark có sẵn, chúng ta có thể xem ...
Khushil

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.