Làm cách nào để sửa lỗi quá nhiều kết nối trong mysql?
Chuông cửa trên Bebo đang phát triển đều đặn, mặc dù có một số ngẫu nhiên trong thời gian hoạt động của nền tảng Bebo. Một tác dụng phụ của sự phổ biến của nó là một lỗi mới – Quá nhiều kết nối. Dưới đây là tổng quan nhanh về nguyên nhân và giải pháp Show Quá nhiều kết nối có thể do có nhiều kết nối đồng thời hoặc do các kết nối cũ không được phát hành sớm. Có một số thay đổi đơn giản mà bạn có thể thực hiện đối với mã PHP và cài đặt MySQL của mình để ngăn cả hai Có hai cách tích hợp sẵn để kết nối với MySQL từ PHP – vĩnh viễn hoặc tương tác. Bạn nhận được kết nối vĩnh viễn bằng mysql_pconnect(). Điều này tạo ra một kết nối vĩnh viễn tới cơ sở dữ liệu (vĩnh viễn được định nghĩa là 8 giờ bởi biến hệ thống wait_timeout của MySQL). Nó sẽ chỉ tạo kết nối mới nếu không thể tìm thấy kết nối cố định hiện có để sử dụng lại. Bạn cần cẩn thận với mysql_pconnect() để đảm bảo rằng bạn không hết kết nối, vì các kết nối này mở quá lâu và bạn không thể đóng chúng bằng mysql_close() Một cách khác là sử dụng mysql_connect(). Điều này tạo ra một kết nối tạm thời mới, nếu tham số new_link được đặt thành true hoặc sử dụng lại kết nối hiện có nếu không. Điều này có thể tốt hơn mysql_pconnect() vì các kết nối này có thể tồn tại trong thời gian ngắn và có thể bị đóng khi cần với mysql_close(). Một tham số quan trọng là cờ CLIENT_INTERACTIVE. Nếu điều này được thông qua, nó sẽ sử dụng giá trị MySQL Interactive_timeout thay vì wait_timeout. Vì wait_timeout mặc định là 8 giờ nên đây có vẻ là một ý tưởng tuyệt vời. Tuy nhiên, đáng ngạc nhiên là Interactive_timeout cũng mặc định là 8 giờ. Bạn nên thay đổi giá trị này thành giá trị nhỏ hơn phù hợp với hệ thống của bạn Sử dụng mysql_connect() với new_link được đặt thành false, chuyển cờ CLIENT_INTERACTIVE và điều chỉnh Interactive_timeout sẽ giúp ngăn chặn sự cố với các kết nối cũ gây nhiễu công việc Để xử lý nhiều kết nối đồng thời, hãy điều chỉnh biến MySQL max_connections. Theo mặc định, nó được đặt thành 100. Tăng giá trị này lên giá trị sẽ hỗ trợ những gì bạn cảm thấy là thực tế cho hệ thống của mình Điều cuối cùng cần làm sau khi cập nhật mã của bạn và MySQL là xóa cơ sở dữ liệu kết nối xấu bằng “mysqladmin flush-hosts”. Điều này sẽ cho phép máy chủ web của bạn kết nối lại với MySQL sau tất cả các lỗi Quá nhiều kết nối đó Gần đây, tôi đang tìm kiếm một cách dễ dàng để khắc phục MySQL Too Many Connections. Mặc dù đây là lỗi đầu tiên đối với tôi, nhưng sau đó tôi mới biết rằng đó là một lỗi khá phổ biến trong MySQL. Giải pháp cho lỗi này rất dễ vì chúng ta chỉ cần tăng số lượng kết nối mysql Có hai cách sử dụng mà chúng tôi có thể giải quyết lỗi này. Chúng tôi có thể tăng số lượng kết nối mysql cho phiên hiện tại hoặc chúng tôi có thể thực hiện các thay đổi để tăng số lượng kết nối mysql vĩnh viễn. Trong hướng dẫn này, chúng ta sẽ thảo luận về cả hai phương pháp để khắc phục MySQL Too Many Connections (Đọc Khuyến nghị. Hướng dẫn từng bước đặt lại mật khẩu root trong Mysql ) (Cũng đọc. Các lệnh quản trị MariaDB cho người mới bắt đầu ) Tăng kết nối mysql cho phiên hiện tạiTrước khi chúng tôi thực hiện các thay đổi để tăng số lượng kết nối mysql, chúng tôi sẽ kiểm tra số lượng kết nối mysql được định cấu hình hiện tại. Để kiểm tra, hãy kết nối với mysql từ thiết bị đầu cuối của bạn, $ mysql –u root –p Nhập mật khẩu để kết nối với mysql và sau khi kết nối, hãy thực hiện lệnh sau, mysql> HIỂN THỊ BIẾN NHƯ "max_connections"; Điều này sẽ mang lại số lượng kết nối tối đa được định cấu hình trên màn hình dưới dạng đầu ra. Nó thường là 151 theo mặc định và bây giờ chúng tôi sẽ tăng giá trị lên 1000. Để làm như vậy, chỉ chạy lệnh sau từ thiết bị đầu cuối mysql, mysql> THIẾT LẬP TOÀN CẦU max_connections = 1000; Giá trị kết nối mysql tối đa của chúng tôi hiện đã được tăng lên 1000 nhưng chỉ dành cho phiên hiện tại. Ngay sau khi chúng tôi khởi động lại dịch vụ mysql hoặc khởi động lại hệ thống, giá trị này sẽ được đặt lại về mặc định Tăng kết nối mysql vĩnh viễnĐể tăng số lượng kết nối mysql vĩnh viễn, chúng tôi cần chỉnh sửa tệp cấu hình mysql tôi. e. ‘/etc/của tôi. cnf'. Mở tập tin, $ sudo vim /etc/my. cnf & tạo mục nhập sau trong tệp, max_connections = 1000 Bây giờ hãy lưu tệp và thoát, sau đó khởi động lại dịch vụ mysql để thực hiện các thay đổi $ sudo systemctl khởi động lại mysqld Vậy đó các bạn, đây là bản sửa lỗi MySQL Too Many Connections của chúng tôi. Vui lòng đề cập đến bất kỳ truy vấn nào khác mà bạn phải sử dụng, bằng cách sử dụng hộp nhận xét bên dưới Bạn có gặp lỗi MySQL không. Quá nhiều kết nối? Lỗi MySQL "quá nhiều kết nối". Vấn đề là gì?Khi đăng nhập vào MySQL, đôi khi bạn có thể bị từ chối và nhận được thông báo lỗi như “quá nhiều kết nối“. Điều này có nghĩa là đã đạt đến số lượng máy khách tối đa có thể kết nối với máy chủ. Một trong hai máy khách sẽ phải đợi một máy khách khác đăng xuất hoặc quản trị viên sẽ phải tăng số lượng kết nối tối đa được phép Có thể tìm thấy thông tin về các kết nối được phép tối đa tới máy chủ bằng cách sử dụng câu lệnh SHOW VARIABLES $ mysql –u root –p mysql> HIỂN THỊ CÁC BIẾN NHƯ 'max_connections';
Các kết nối hiện đang bị chiếm dụng có thể được tìm thấy bằng câu lệnh sau mysql> HIỂN THỊ TÌNH TRẠNG TOÀN CẦU NHƯ 'threads_connected';
Nếu số lượng giá trị thread_connected giống với max_connections, thì máy chủ MySQL sẽ trả về thông báo lỗi “quá nhiều kết nối” cho máy khách. Đó là Số lượng kết nối mới được phép = max_connections - thread_connected = 50 - 50 = 0 Chúng ta có thể xem có bao nhiêu kết nối hiện đang hoạt động bằng cách thực hiện câu lệnh sau mysql> HIỂN THỊ TÌNH TRẠNG TOÀN CẦU NHƯ 'threads_running';
Điều này có nghĩa là 40 kết nối (i. e. treads_connected - tread_running = 50 - 10 =40 ) không hoạt động trong cơ sở dữ liệu Trước tiên, bạn nên đảm bảo rằng các ứng dụng của mình đang đóng kết nối với máy chủ khi chúng không còn cần thiết nữa. Tuy nhiên, bạn có thể giải quyết lỗi này bằng cách tăng giá trị của biến max_connections và có thể giảm giá trị của wait_timeout nếu bạn cho rằng nhiều kết nối đến máy chủ của mình không được sử dụng tích cực Lỗi MySQL "quá nhiều kết nối". Giải phápChúng ta có thể tăng giá trị của tham số max_connections theo thời gian chạy (tạm thời) và đặt giá trị của nó vĩnh viễn trong tệp cấu hình MySQL Thay đổi tham số max_connections (Tạm thời) Để tạm thời thay đổi biến này trong khi máy chủ đang chạy, hãy nhập câu lệnh SQL sau $ mysql –u root –p mysql> THIẾT LẬP TOÀN CẦU max_connections = 300; Ghi chú. Không nhất thiết phải ngắt kết nối máy khách hiện được kết nối để chạy câu lệnh SQL này với quyền root. Máy chủ cho phép nhiều kết nối hơn giá trị của max_connections. Một kết nối được dành riêng cho người dùng root hoặc bất kỳ tài khoản nào khác có đặc quyền SUPER Khi daemon máy chủ MySQL (mysqld) được khởi động lại, giá trị trên sẽ được đặt trở lại giá trị trước đó tồn tại trong. cnf hoặc của tôi. tập tin ini. Để thực hiện các thay đổi vĩnh viễn, hãy sử dụng phương pháp được mô tả tại đây Thay đổi tham số max_connections (Vĩnh viễn) Một phương pháp tốt hơn để thay đổi tham số max_connections là thêm tùy chọn này vào tệp tùy chọn (của tôi. cnf hoặc của tôi. ini, tùy thuộc vào hệ thống của bạn) để nó có hiệu lực vào lần khởi động lại máy chủ tiếp theo. Giả sử bạn đang sử dụng /etc/my. cnf, thêm dòng dưới đây vào nó
Bây giờ hãy khởi động lại daemon mysqld để các thay đổi có hiệu lực Đối với CentOS/RHEL 6 # khởi động lại dịch vụ mysqld Đối với CentOS/RHEL 7 # systemctl khởi động lại mysqld SingleStoreDBSingleStoreDB là cơ sở dữ liệu SQL phân tán, thời gian thực, hợp nhất các giao dịch và phân tích trong một công cụ duy nhất để thúc đẩy quyền truy cập có độ trễ thấp vào các bộ dữ liệu lớn, đơn giản hóa việc phát triển các ứng dụng doanh nghiệp hiện đại, nhanh chóng Được xây dựng cho các nhà phát triển và kiến trúc sư, SingleStoreDB mang lại hiệu suất 10-100 mili giây cho các truy vấn phức tạp — đồng thời đảm bảo doanh nghiệp của bạn có thể dễ dàng mở rộng quy mô SingleStoreDB tương thích với dây MySQL và cung cấp cú pháp quen thuộc của SQL, nhưng dựa trên công nghệ cơ bản hiện đại cho phép tốc độ và quy mô cao hơn vô cùng so với MySQL. Đây là một trong nhiều lý do khiến SingleStore là cơ sở dữ liệu quan hệ được xếp hạng hàng đầu số 1 trên TrustRadius Để biết thêm thông tin về cách SingleStore có liên quan và có thể tăng tốc cho MySQL của bạn, hãy truy cập trang MySQL của chúng tôi Tài nguyên
|