wait_timeout là thời gian mà mySQL đợi trước khi đóng kết nối nhàn rỗi. Trên hầu hết các máy chủ linux, wait_timeout cao và tốt hơn là giảm nó xuống giá trị thấp hơn. Các kết nối không hoạt động trong máy chủ sẽ dẫn đến các sự cố vì việc xây dựng các kết nối không hoạt động sẽ sử dụng nhiều tài nguyên máy chủ và sẽ dẫn đến tải máy chủ cao. Nhập lệnh “mysqladmin proc stat” HOẶC “mysqladmin processlist” để xem số lượng kết nối mysql ở trạng thái ngủ
Không đặt mySQL wait_timeout thành giá trị rất thấp vì bạn có thể thường xuyên đạt đến giới hạn thời gian chờ. Bạn sẽ thấy lỗi “Máy chủ MySQL đã biến mất” nếu wait_timeout/interactive_timeout được đặt quá thấp
Làm cách nào để kiểm tra giá trị wait_timeout mySQL hiện tại?
Bạn phải có quyền truy cập root của máy chủ để tăng/giảm giá trị mySQL wait_timeout và Interactive_timeout. Bạn phải liên hệ với nhà cung cấp dịch vụ lưu trữ web của mình nếu bạn không có quyền truy cập root máy chủ
1. Đăng nhập vào máy chủ qua SSH với tư cách người dùng 'root'
2 Chạy lệnh “biến mysqladmin. grep wait_timeout” để kiểm tra giá trị wait_timeout hiện tại
Ví dụ
[root@server ~]# biến mysqladmin. grep wait_timeout
chờ_thời gian chờ 28800
Trên máy chủ của tôi giá trị wait_timeout là 28800 giây. Đây là giá trị wait_timeout mặc định trên máy chủ linux và nó quá cao [8 giờ wait_timeout]
Khi một ứng dụng không đóng được kết nối không sử dụng, giá trị wait_timeout
thấp sẽ giúp bạn tránh vượt quá số lượng kết nối cho phép. Sử dụng các hướng dẫn sau để đặt giá trị này
Đă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
my.cnf
, tệp cấu hình MySQL®$ sudo vi /etc/my.cnf
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
wait_timeout = 28800 interactive_timeout = 28800
Giá trị
interactive_timeout
không ảnh hưởng đến bất kỳ kết nối ứng dụng web nào. Mộtwait_timeout
thấp là một phương pháp hay nhất thông thườngMôi trường PHP phi trạng thái hoạt động tốt với thời gian chờ 60 giây trở xuống. Các ứng dụng sử dụng nhóm kết nối [Java®,. NET®, v.v.] cần điều chỉnh giá trị
wait_timeout
để phù hợp với cài đặt nhóm kết nối của họ.
0 giây mặc định hoạt động tốt với nhóm kết nối được định cấu hình đúngwait_timeout = 28800 interactive_timeout = 28800
Định cấu hình
wait_timeout
dài hơn một chút so với thời gian kết nối dự kiến của nhóm kết nối ứng dụng để kiểm tra an toàn. Cân nhắc thay đổi giá trị trực tuyến vì điều đó không yêu cầu khởi động lại MySQL và bạn có thể điều chỉnh nó trong khi máy chủ chạy mà không phát sinh thời gian chết. Thay đổi giá trị thành
0 và mọi phiên mới được tạo sẽ kế thừa giá trị đó. Đảm bảo giữ nguyên cài đặt trongwait_timeout = 28800 interactive_timeout = 28800
my.cnf
. Mọi kết nối hiện có cần phải đạt giá trị cũ củawait_timeout
nếu ứng dụng từ bỏ kết nối. Nếu bạn có các công việc báo cáo xử lý cục bộ lâu hơn trong khi giao dịch, bạn có thể xem xét việc các công việc đó gặp sự cố
3 khi kết nốiwait_timeout = 28800 interactive_timeout = 28800
Lưu các thay đổi và thoát khỏi trình chỉnh sửa
Sử dụng lệnh sau để khởi động lại MySQL và áp dụng các thay đổi, nếu cần
$ sudo /etc/init.d/mysql restart
©2020 Rackspace US, Inc
Trừ khi có ghi chú khác, nội dung trên trang này được cấp phép theo Creative Commons Attribution-NonCommercial-NoDerivs 3. 0 Giấy phép chưa chuyển đổi
Dilsi Chandrasena
Theo
9 Tháng Tư, 2018
·
2 phút đọc
Thay đổi biến wait_timeout của MySQL
- Chúng tôi có thể đặt biến wait_timeout, cho một phiên hoặc trên toàn cầu
- Nếu chúng ta đặt biến wait_timeout cho một phiên, nó sẽ chỉ hợp lệ cho một phiên cụ thể. Nhưng khi chúng tôi đặt biến wait_timeout trên toàn cầu, nó sẽ hợp lệ cho tất cả các phiên
Để chạy các lệnh này, trước tiên chúng ta cần đăng nhập vào máy chủ MySql
Chúng ta có thể kiểm tra các giá trị hiện tại của biến wait_timeout bằng các lệnh bên dưới
HIỂN THỊ CÁC BIẾN CỦA PHIÊN NHƯ “%wait_timeout%”;
- Giá trị wait_timeout mặc định là 28800 giây
Nếu chúng ta cần đặt thời gian chờ này cho một phiên, chúng ta có thể sử dụng lệnh bên dưới
SET phiên wait_timeout=300;
Nếu chúng ta cần thay đổi giá trị toàn cầu wait_timeout, chúng ta nên làm theo các bước bên dưới
1. mở của tôi. cnf nằm trong thư mục /etc/mysql.
2. Thêm giá trị bên dưới với blog mysqld vào của tôi. tập tin cnf.
[mysqld]
wait_timeout=300
interactive_timeout = 300
3. Khởi động lại máy chủ MySQL bằng lệnh bên dưới
khởi động lại dịch vụ mysql
4. Sau đó, chúng ta có thể thấy biến wait_timeout đã thay đổi trên toàn cầu
Trước khi thay đổi giá trị toàn cầu,
Sau khi thay đổi giá trị toàn cầu,