Thời gian chờ kết nối MySQL là gì?

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 bị 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 trước khi thực hiện các cập nhật cần thiết

________số 8_______

đầ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, 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 thi đầ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 trả về
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

________số 8_______

đầ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 để khắc phục thời gian chờ kết nối trong MySQL?

Xảy ra lỗi kết nối hết thời gian chờ khi tường lửa của cơ sở dữ liệu không cho phép bạn kết nối với cơ sở dữ liệu từ máy hoặc tài nguyên cục bộ của bạn. Nếu bạn gặp phải lỗi này, hãy kiểm tra xem bạn đã thêm máy hoặc tài nguyên mà bạn đang kết nối từ đó vào danh sách các nguồn đáng tin cậy của cơ sở dữ liệu chưa .

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

MySQL có giá trị mặc định của biến wait_timeout được đặt thành 28800 giây (8 giờ). .
HIỂN THỊ BIẾN
HIỂN THỊ CÁC BIẾN CỦA PHIÊN
HIỂN THỊ CÁC BIẾN TOÀN CẦU

Làm cách nào để tăng giới hạn thời gian kết nối 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 để sửa lỗi hết thời gian chờ trong MySQL?

Cách tốt nhất để khắc phục là tăng net_read_timeout (mặc định là 30 giây xem trang web mysql) vì vậy, bạn cho phép . Nếu không, kết nối sẽ đóng, vì net_read mất nhiều thời gian hơn thời gian chờ đã giải quyết.