Đã hủy kết nối (Có lỗi khi đọc các gói truyền thông)


8

Các lỗi mys.log cho thấy

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

Trong khi phía khách hàng nhận được:

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'

Tôi đọc hướng dẫn sử dụng mysql về điều này, và rất nhiều chủ đề khác. Vì vậy, tôi đã thay đổi một số giá trị trong my.cnf

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

Nhìn vào nhật ký truy vấn của một kết nối bị hỏng:

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

Đã kiểm tra tình trạng bảng. địa chỉ liên kết là IP máy chủ nhưng tôi cần có khả năng kết nối từ bên ngoài.

Aborted_connects is 196

Bạn có thể kiểm tra chất lượng kết nối giữa hai máy chủ không? 100 ping cơ bản nên làm ..
melsayed

Câu trả lời:


4

Dựa trên dữ liệu hạn chế, tôi tự hỏi liệu bạn có tường lửa giữa máy khách và máy chủ MySQL (có thể trực tiếp trên máy chủ) cho phép 3306 đến máy chủ MySQL nhưng đang chặn các gói phản hồi cho yêu cầu SYN ban đầu.

Bạn có thể muốn thực hiện kết xuất gói tin ở cả hai bên để tìm ra những gì đang xảy ra ở phía TCP và / hoặc kiểm tra bất kỳ tường lửa nào tồn tại giữa hai bên.


Cảm ơn. Dữ liệu nào tôi có thể cung cấp để làm rõ điều này? Tôi không có tường lửa ở phía cuối, không chắc chắn về phía bên kia. Chủ yếu là kết nối hoạt động, vì vậy tôi đoán đó không phải là tường lửa. Tôi đã thử bán phá giá gói nhưng có rất nhiều lưu lượng và vấn đề chỉ hiển thị một vài lần một ngày. Tôi đã thất bại trong việc xác định bộ lọc chỉ chụp các gói tôi cần.
PiTheNumber

4

Tôi nghi ngờ đây không phải là một vấn đề mysql như vậy.

Xác minh rằng lớp vận chuyển là OK. Bạn có thể có được một kết nối tcp bằng cách sử dụng telnet [db_server] 3306?

Khách hàng và máy chủ của bạn có đồng ý về việc liệu kết nối có được mã hóa SSL không?

Tôi không thể nghĩ ra nhiều tình huống mà tôi muốn chạy kết nối mysql qua internet công cộng, điều mà tôi nghi ngờ là ý của bạn là 'có thể kết nối từ bên ngoài'. Nếu không được mã hóa, đây là một rủi ro bảo mật rất lớn và chi phí thiết lập SSL cho mỗi kết nối là quá cao đối với hầu hết các mục đích sử dụng. Bạn có thể muốn xem xét sử dụng một đường hầm được mã hóa liên tục của một số loại.


kết nối telnet và hầu hết các kết nối chỉ hoạt động tốt theo thời gian vấn đề này xuất hiện. Vâng, đó là một kết nối qua internet công cộng. Tôi muốn có mã hóa ở đây nhưng tôi không kiểm soát đầu kia. Dù sao trước tiên tôi cần ổn định kết nối.
PiTheNumber

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.