Cách khắc phục lỗi MySQL: Quá nhiều kết nối

Giới thiệu về lỗi MySQL: Quá nhiều kết nối

Khi bạn có một ứng dụng web (trang web, blog, diễn đàn, v.v.) có nhu cầu cao, tức là một số lượng lớn người dùng truy cập, điều này chuyển thành lượng tiêu thụ trên máy chủ tăng lên. Nếu đã nói ứng dụng web sử dụng cơ sở dữ liệu MySQL và các truy vấn thực sự rất nhiều (do lập trình web không tốt hoặc do nhiều người dùng sử dụng web), có khả năng MySQL sẽ hiển thị lỗi này:

mysqli_connect(): (HY000/1040): Too many connections

Lỗi MySQL: Too Many Connections nghĩa là gì?

Điều đó có nghĩa là có quá nhiều yêu cầu đến với MySQL, nhiều hơn mức nó có thể chấp nhận, nhiều hơn nó có thể xếp hàng hoặc chờ đợi.

Làm thế nào để giải quyết nó?

Đơn giản, chúng ta phải tăng giới hạn tối đa các yêu cầu (kết nối) mà MySQL hỗ trợ.

Tôi sẽ cung cấp cho bạn hai tùy chọn để khắc phục sự cố này:

1. Chúng tôi chỉnh sửa tệp /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Trong đó, chúng tôi đặt những điều sau vào nơi nó nói [mysql]:

max_connections = 500 max_user_connections = 500

Điều này sẽ tăng số lượng kết nối tối đa từ 100 (là mặc định) lên 500.

Chúng tôi lưu và thoát, sau đó chúng tôi khởi động lại dịch vụ MySQL và thế là xong. Thay đổi này là vĩnh viễn.

2. Một cách khác để giải quyết vấn đề này là thay đổi giới hạn tối đa bằng nhau, nhưng thông qua truy vấn MySQL.

Trước tiên, hãy hiển thị giới hạn hiện tại:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

Điều này sẽ cho chúng ta thấy một cái gì đó như thế này:

+ ----------------- + ------- + | Tên_biến | Giá trị | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Nói cách khác, giới hạn hiện tại là 151 kết nối, hãy tăng nó lên 500 bằng truy vấn:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

Sẵn sàng!

Vấn đề theo cách này là khi dịch vụ được khởi động lại, cấu hình này bị mất.

Để cung cấp thông tin chi tiết này, bạn có thể tạo một tập lệnh bash xác minh mỗi lần X hoặc thậm chí thêm dòng vào khối khởi động hoặc khởi động lại của daemon 😉

Nhưng tại sao tôi lại muốn biết tùy chọn thứ 2 này? ... à, đó là những gì tôi thường nói. Nhưng một tháng trước, một Máy chủ Ubuntu đã bỏ qua phương pháp số 1, vì vậy ... trong những trường hợp cực kỳ nghiêm trọng về hệ điều hành ngớ ngẩn, chúng tôi có tùy chọn thứ 2 này cũng hoạt động tốt 😉


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   nex dijo

    Bài hay, MySql… họ sử dụng rất nhiều trong FreeBSD,… .KZKG ^ Gaara ?,… Sẽ rất tốt nếu bạn đăng một bài về cách cài đặt và cấu hình MySql trong FreeBSD như: SSH (secure - shell), SSH (qua Web), SFTP (SSH-File Transfer Protocol), Phần mở rộng Apache - PHP- MySql, PHP5 và PhpSysInfo.

    1.    KZKG ^ Gaara dijo

      Đối với điều này, tôi sẽ phải cài đặt FreeBSD, tôi không nghĩ mình có thời gian ngay bây giờ, tôi vừa thay đổi công việc và tôi có nhiều trách nhiệm mới 🙁

  2.   Saul dijo

    Gần đây tôi đã phải làm điều gì đó tương tự cho một dự án với nodejs. Trong trường hợp của tôi, nó đã tăng lên 250 và như vậy là đủ, hiện tại tôi vẫn ổn. Cảm ơn vì thông tin

  3.   Francisco dijo

    Xin chào, bạn có thể giúp tôi cách nhập /etc/mysql/my.cfg không?

    Tôi có một VPS, nhưng tôi không thể đăng nhập bằng PUTTY.

    Chúc mừng.

  4.   mồi câu dijo

    Để giải quyết vấn đề của Tùy chọn 1.- Tùy chọn được chú thích và giữ các thay đổi khi khởi động lại máy chủ, tệp phải được chỉnh sửa theo phiên bản:

    ////////////////////////////////////////////// ////////////////////
    // Tôi thay đổi thư mục trong Ubuntu 16.04 //////////////////////////
    ////////////////////////////////////////////// ////////////////////
    Tôi đã thấy /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////// ////////////////////
    // Tôi thay đổi thư mục trong Ubuntu 15.04 //////////////////////////
    ////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////// ////////////////////
    // Tôi thay đổi thư mục trong Ubuntu cũ //////////////////////////
    ////////////////////////////////////////////// ////////////////////

    Tôi đã thấy /etc/mysql/my.cnf

    ////////////////////////////////////////////// ////////////////////
    // thêm dòng này dưới thẻ [mysqld] hoặc [mysql] //
    // Sau đó khởi động lại máy chủ //
    ////////////////////////////////////////////// ////////////////////
    max_connections = 500

  5.   phẫn nộ dijo

    Hướng dẫn từ đầu không mất thời gian cho bạn biết cách thay đổi nó