Làm cách nào để tăng giới hạn thời gian kết nối MySQL?

Một kết nối MySQL liên kết [kết nối] Bàn làm việc với máy chủ MySQL. Hầu hết các hành động được thực hiện trong Workbench sau đó được thực hiện đối với máy chủ MySQL được kết nối. Mỗi kết nối MySQL chứa tập hợp các định nghĩa riêng, vì vậy bạn có thể xác định nhiều kết nối MySQL trong Workbench. Ví dụ: các kết nối có thể kết nối với các máy chủ MySQL khác nhau hoặc cùng một máy chủ MySQL với các tên người dùng khác nhau hoặc bật SSL cho một máy chủ hoặc bạn có thể thiết lập kết nối với máy chủ MySQL từ xa [trên máy chủ lưu trữ web của bạn?] bằng SSH

Đối với nhiều kết nối đến cùng một máy chủ MySQL cục bộ, bạn có thể có một kết nối sử dụng "root" với một kết nối khác sử dụng người dùng ít đặc quyền hơn. Tùy thuộc vào cách bạn thiết lập người dùng, họ có thể [hoặc không] đều có quyền xem và sử dụng cùng một cơ sở dữ liệu [thông tin]. Ví dụ: bạn có thể sử dụng Workbench để định cấu hình và sử dụng người dùng ít đặc quyền hơn mà bạn sử dụng cho ứng dụng web của mình

Vì vậy, để tóm tắt, các kết nối chỉ cần kết nối với máy chủ MySQL. Nếu hai kết nối sử dụng cùng một thông tin chính xác thì kết quả trong Workbench sẽ giống hệt nhau, mặc dù đây không phải là trường hợp sử dụng phổ biến. Để biết thêm thông tin về kết nối MySQL trong MySQL Workbench, hãy xem Chương 5, Kết nối trong MySQL Workbench

Khi cài đặt Stash hoặc trong quá trình sử dụng ứng dụng, mẫu thông báo sau được báo cáo trong tệp nhật ký

2012-08-12 22:20:25,437 ERROR [main]  com.jolbox.bonecp.ConnectionHandle Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01
2012-08-12 22:20:25,456 ERROR [main]  o.h.transaction.JDBCTransaction JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 18,058 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.

Gây ra

Sự cố này xảy ra do các kết nối cơ sở dữ liệu hết thời gian của máy chủ MySQL nhanh hơn nhóm kết nối Stash có thể nhận thấy. Điều này làm cạn kiệt nhóm kết nối Stash vì nó sẽ giữ cho các kết nối của nó mở trong khi phía MySQL của các kết nối đã bị đóng

Nghị quyết

Stash được vận chuyển với khoảng thời gian kiểm tra kết nối mặc định là 10 phút

MySQL có giá trị mặc định biến được đặt thành 28800 giây [8 giờ]

Do đó, nếu cả hai bên của kết nối vẫn giữ nguyên giá trị mặc định, sự cố sẽ không bao giờ xảy ra, vì MySQL sẽ không bao giờ hết thời gian chờ kết nối trước khi Stash thực hiện điều đó

Nếu biến wait_timeout của MySQL bị giảm giá trị

  1. Trong trường hợp này, để tránh việc MySQL đóng các kết nối và Stash không thông báo, hãy xác định giá trị khoảng thời gian kiểm tra Stash thành giá trị nhỏ hơn giá trị MySQL.  
    Trong tệp STASH_HOME/shared/stash-config.properties, hãy thêm dòng sau và xác định số phút cho thời gian chờ kết nối

    db.pool.idle.testInterval=1

  2. Nếu thời gian chờ của MySQL chưa đến một phút, hãy thêm interactiveClient=true vào URL JDBC trong tệp stash-config.properties file to use MySQL default value 28800 seconds, eg:

    jdbc.url=jdbc:mysql://localhost:3306/stash212?autoReconnect=true&characterEncoding=utf8&useUnicode=true&sessionVariables=storage_engine%3DInnoDB&interactiveClient=true

     

Lưu ý rằng MySQL giữ lại một số phạm vi cho biến wait_timeoutinteractive_timeout. Kiểm tra kỹ cài đặt tương tự của biến bằng cách chạy các truy vấn sau trên cơ sở dữ liệu

Hôm nay, chúng ta đang tìm hiểu cách thay đổi thời gian chờ kết nối trong MySQL bằng Linux [Ubuntu 20. 04] và hệ điều hành Windows

Đôi khi, bạn liên tục mất kết nối với Máy chủ MySQL vì thuộc tính

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6 được đặt thành vài giây theo mặc định

Ở đây, chúng ta sẽ xem cách thay đổi giá trị mặc định của

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6 trong MySQL bằng Linux [Ubuntu 20. 04] và hệ điều hành Windows

Chúng tôi có thể cập nhật tệp cấu hình hoặc sử dụng các truy vấn SQL để thực hiện các thay đổi trong cả hai hệ điều hành. Hãy xem từng người trong số họ

Đầu tiên, chúng ta cần mở Windows Command Line và điều hướng đến đường dẫn cài đặt MySQL Server. Theo mặc định, Máy chủ MySQL được cài đặt tại

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
8

Điều hướng đến thư mục

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
9 bằng cách sử dụng
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
0 trên Dòng lệnh. Ngoài ra, hãy nhập
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
1 để đăng nhập với tư cách người dùng
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
2

Bây giờ, chúng ta có thể thấy giá trị mặc định của thuộc tính

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6 bằng cách sử dụng truy vấn sau đây trước khi thực hiện các cập nhật cần thiết

mysql> SHOW VARIABLES LIKE 'connect_timeout';

đầu ra

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]

Như chúng ta có thể thấy, kết nối đến MySQL Server sẽ bị mất sau 10 giây. Vì vậy, chúng ta có thể thay đổi nó thành 28800 giây [8 giờ] bằng cách sử dụng các lệnh sau trên Windows Command-Line

Hãy nhớ rằng, việc cập nhật

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 và
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5 là tốt vì nó sẽ hữu ích khi chạy các ứng dụng tiêu tốn nhiều thời gian để thực hiện đầy đủ

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

Sử dụng lệnh sau để xác nhận tất cả các bản cập nhật

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];

đầu ra

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]

Ở đây,

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6 đại diện cho số giây mà máy chủ
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
7 đợi gói kết nối trước khi quay lại
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
8.
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 cũng hiển thị số giây mà Máy chủ MySQL chờ một hoạt động trên kết nối tương tác trước khi đóng

Giống như

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6 và
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4,
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5 cũng hiển thị số giây mà Máy chủ MySQL chờ một hoạt động trên kết nối trước khi đóng nó

Nếu bạn đang viết một ứng dụng nào đó, thì bạn có thể làm theo cách sau để thay đổi nó qua ngôn ngữ lập trình, chẳng hạn như Java hoặc Python

connection.query['SET GLOBAL connect_timeout=28800']
connection.query['SET GLOBAL interactive_timeout=28800']
connection.query['SET GLOBAL wait_timeout=28800']

Một cách khác là cập nhật tệp cấu hình bằng cách mở tệp

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
3 tại đường dẫn
mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
4 [nếu bạn đã cài đặt máy chủ MySQL ở vị trí mặc định]. Sau đó, tìm phần
mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
5 và viết

[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800

Khởi động lại máy chủ MySQL và tận hưởng các bản cập nhật

Mở trình bao Ubuntu và đăng nhập với tư cách siêu người dùng bằng cách sử dụng

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
6. Sau đó, đăng nhập vào máy chủ MySQL bằng truy vấn sau

$ mysql -u root -p password

Khi chúng tôi vào, hãy kiểm tra giá trị mặc định của

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6, là 10 giây, như chúng tôi có thể thấy bên dưới

mysql> SHOW VARIABLES LIKE 'connect_timeout';

đầu ra

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]

Bây giờ, hãy thực hiện các truy vấn sau để cập nhật các giá trị của

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6,
mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ['connect_timeout', 'interactive_timeout', 'wait_timeout'];
9 và
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5. Như đã đề cập trước đó, chúng tôi cập nhật ba ứng dụng này để chạy các ứng dụng mất nhiều thời gian để thực thi đầy đủ

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

đầu ra

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
1

Cách khác là cập nhật tệp cấu hình. Giả sử chúng ta kỳ vọng 28800 giây là giá trị của

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set [0.00 sec]
6,
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
4 và
mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;
5

Để làm được điều đó, chúng ta cần chỉnh sửa tệp cấu hình nằm ở đường dẫn này,

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]
4. Chúng tôi sử dụng trình soạn thảo
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set [0.04 sec]
5;

Làm cách nào để tăng thời gian kết nối trong MySQL?

Thay đổi thời gian chờ của MySQL trên máy chủ .
Đăng nhập vào máy chủ của bạn bằng cách sử dụng Secure Shell® [SSH]
Sử dụng lệnh sudo để chỉnh sửa của tôi. .
Xác định vị trí cấu hình thời gian chờ và thực hiện các điều chỉnh phù hợp với máy chủ của bạn. .
Lưu các thay đổi và thoát khỏi trình chỉnh sửa

Làm cách nào để tăng thời gian chờ trong truy vấn MySQL?

Tôi có thể điều chỉnh thời gian chờ không? . Điều này đặt lượng thời gian tối đa [tính bằng giây] mà một truy vấn có thể thực hiện trước khi MySQL Workbench ngắt kết nối khỏi máy chủ MySQL. go to Preferences, SQL Editor, and adjust the DBMS connection read time out option that defaults to 600 seconds. This sets the maximum amount of time [in seconds] that a query can take before MySQL Workbench disconnects from the MySQL server.

Kết nối thời gian tối đa cho MySQL là gì?

Giới hạn thời gian cho các kết nối tới cơ sở dữ liệu MySQL là 30 giây thực và 10 giây thời gian CPU cho PHP .

Làm cách nào để tăng Max_user_connections trong MySQL?

Trả lời .
Kết nối với máy chủ Plesk qua SSH
mở của tôi. cnf trong trình soạn thảo văn bản. Trong ví dụ này, chúng tôi đang sử dụng trình soạn thảo vi. .
Thêm dòng sau vào phần [MySQLD]. # grep max_user_connections /etc/my. cnf. .
Lưu các thay đổi và đóng tệp
Khởi động lại dịch vụ MySQL/MariaDB để áp dụng các thay đổi

Chủ Đề