2010-03-16 37 views
15

Trên máy chủ sản xuất LAMP, thỉnh thoảng tôi gặp lỗi 'quá nhiều kết nối' từ MYSQL, tôi muốn thêm giám sát để tìm xem lý do có vượt quá tối đa kết nối hay không giới hạn.Giám sát các kết nối được sử dụng trên mysql để gỡ lỗi 'quá nhiều kết nối'

Câu hỏi của tôi: Làm thế nào tôi có thể truy vấn từ mysql hoặc từ mysqladmin số lượng kết nối được sử dụng hiện tại? (Tôi nhận thấy rằng tình trạng chương trình đưa ra tổng kết nối và không phải là những hiện sử dụng.)

Trả lời

15

Một công cụ rất mạnh mẽ để giám sát MySQL là innotop. Bạn có thể tìm thấy nó ở đây:

https://github.com/innotop/innotop

Trong Debian Lenny, nó là một phần của gói mysql-client-5.0 và tôi đoán nó có sẵn cho distro khác là tốt. Nó đặc biệt mạnh mẽ trong việc giám sát nội bộ InnoDB, nhưng cũng cung cấp giám sát chung của máy chủ.

Trong chế độ "Biến số & Trạng thái", nó giám sát các biến "Kết nối" và "Max_used_Connections" (trong số các biến thể khác). Nó hiển thị các giá trị tuyệt đối và gia tăng - sau này có thể cung cấp cho bạn một ý tưởng về các kết nối hiện tại.

Vì innotop cung cấp chế độ không tương tác, bạn có thể dễ dàng tạo giám sát tự động hoàn toàn bằng cách gọi innotop từ một số tập lệnh tùy chỉnh, kiểm tra Nagios hoặc bất kỳ hệ thống nào bạn có.

+2

Trên Debian, bạn có thể phải cài đặt thủ công 'libterm-readkey-perl 'để làm cho nó hoạt động. –

3

http://www.mail-archive.com/[email protected]/msg00830.html

Hãy xem ở đây giao phối - có thể sử dụng một số.

+0

Cảm ơn rất nhiều câu trả lời.Tuy nhiên, chủ đề mô tả làm thế nào để thấy rằng tình hình kết nối tối đa đã xảy ra để recovder từ nó. Tôi đang tìm cách liên tục theo dõi các kết nối được sử dụng theo thời gian vì vậy tôi sẽ biết nếu nó là nguyên nhân hoặc cái gì khác như thiếu bộ nhớ hoặc tài nguyên truy cập đĩa. – Nir

1

Bạn có thể dễ dàng nhận được MySQL Admin, từ đó, bạn có thể dễ dàng theo dõi vị trí của các kết nối được sử dụng. Xem ở đây về điều này về connections được sử dụng ...

+0

Tài liệu trên liên kết "kết nối" đã bị xóa. –

+1

@ChrisBuckett Không ngạc nhiên khi xem xét việc Oracle hủy diệt MySql ... Có [MariaDb] (http://mariadb.org/) làm phiên bản chia tách ... – t0mm13b

2

SHOW STATUS không hiển thị tổng số kết nối: nó hiển thị kết nối hiện tại. Bạn nhận được quá nhiều kết nối thông báo lỗi khi số lượng kết nối mở (nhàn rỗi hoặc không) vượt qua giới hạn được thiết lập cho máy chủ.

Từ nhận xét của bạn về SHOW STATUS, có vẻ như bạn có nhiều kết nối không hoạt động trong máy chủ của mình. Điều đó chỉ vào việc lạm dụng các kết nối liên tục; một số thư viện yêu cầu hỗ trợ kết nối liên tục không xử lý chúng đúng cách và chúng có xu hướng mở kết nối mới ngay cả khi có kết nối không hoạt động.

Tìm hiểu ứng dụng nào đang chạy các truy vấn như vậy và định cấu hình ứng dụng không sử dụng kết nối liên tục.

2

Để có được tổng số lượng kết nối đồng thời cho phép MySQL bạn nên kiểm tra

show variables like 'max_connections'

và có bao nhiêu kết nối đồng thời đang được đang được sử dụng có thể được đo bằng

show status like 'max_used_connections'

Bạn nên theo dõi các biến này. Nếu bạn cần một công cụ thương mại theo dõi các chỉ số MySQL quan trọng, bạn có thể thử MySQL Enterprise Monitor, MONyog, v.v.

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