2009-08-18 66 views
18

Tôi sử dụng JDBC để kết nối với MySQL. Khi ở số localhost:3306, mọi thứ đều ổn.Tại sao kết nối với máy chủ MySQL quá chậm?

Nhưng khi tôi chuyển ứng dụng sang máy tính khác trong mạng nội bộ và sử dụng <Intranet-IP>:3306 để kết nối với cơ sở dữ liệu MySQL, phải mất khoảng 1 phút để kết nối với MySQL thành công. Có chuyện gì với điều này?

Trả lời

32

Vâng, đó có thể là sự cố DNS. Bạn có thể tắt tra cứu tên máy chủ DNS bằng cách bắt đầu mysqld bằng tùy chọn --skip-name-resolve trong tệp cấu hình.

đọc vào đây để biết thêm chi tiết: http://dev.mysql.com/doc/refman/5.0/en/host-cache.html

+0

Cảm ơn rất nhiều! – MemoryLeak

+0

Tôi gặp sự cố này và thực sự đó là vấn đề ngược lại dns – acemtp

+12

Chỉ cần rõ ràng, '--skip-name-resolve' sẽ được sử dụng làm tùy chọn dòng lệnh khi khởi động mysql, trong khi' skip-name-resolve' (không có dấu gạch ngang kép ở phía trước) sẽ được sử dụng trong tệp cấu hình. – JYelton

1

tường lửa, Internet, định tuyến, v.v. sẽ làm chậm kết nối của bạn.

Bạn nên đặt cơ sở dữ liệu của mình trên mạng nội bộ thay thế. Giữ nó ở địa phương và đằng sau tường lửa lớn của bạn. Tất nhiên bạn có thể có tường lửa và bảo mật giữa các máy tính. Tôi khuyên bạn không nên để lộ kết nối cơ sở dữ liệu mysql của mình với Internet chưa được lọc theo cách đó.

+0

là IP mạng nội bộ! – MemoryLeak

+0

ah, tôi thấy bạn đã chỉnh sửa câu hỏi của bạn :) tốt để thấy rằng bạn đã tìm thấy câu trả lời cho câu hỏi của mình. – Makach

7

Đối với tôi đó là giải pháp này tôi tìm thấy ở đây, Nếu kết nối IP6 được kích hoạt, kết nối đến "localhost" có thể chậm, thay vì sử dụng địa chỉ ip, 127.0.0.1. Điều này làm việc cho tôi.

my mysql slow to connect problem was solved by this solution

+0

Nhận thấy vấn đề này trong khi khắc phục sự cố cài đặt MediaWiki chậm. mysql_connect đã mất gần một giây. Thay đổi cấu hình từ localhost thành 127.0.0.1 và chuyển từ 1021ms thành 7ms. Cảm ơn! – jmgardn2

+0

Cảm ơn! Điều này chỉ giải quyết được một câu hỏi mà tôi đã đăng. Ai biết IPv6 sẽ gây rối với các phiên bản MySQL gần đây rất nhiều. –

11

Các --skip-name-resolve làm việc rất lớn đối với tôi.

Để làm cho nó vĩnh viễn, tôi chỉ cần thêm dòng này vào cuối tập tin my.ini trong phần [mysql]:

skip-name-resolve 

và thì đấy! Giao dịch hiện đang bay!

Các vấn đề liên quan