Bao lâu thì quá lâu để các kết nối MySQL ngủ được bao lâu?


38

Tôi đã đăng nhập vào máy chủ của mình để kiểm tra trạng thái của cơ sở dữ liệu và nhận thấy SHOW PROCESSLIST;rằng có một số lượng lớn các kết nối đang ngủ rất cũ.

nhập mô tả hình ảnh ở đây Thời hạn kết nối nên là bao lâu trước khi kết nối bị hủy?

Làm cách nào để đặt giới hạn thời gian trong MySQL 5.0.51a-3ubfox5.4?

Chú thích:

Tôi đang sử dụng PHP 5.2.x và khung symfony 1.2.


Câu trả lời:


53

mysqld sẽ hết thời gian kết nối cơ sở dữ liệu dựa trên hai tùy chọn máy chủ:

Cả hai đều là 28.800 giây (8 giờ) theo mặc định.

Bạn có thể đặt các tùy chọn này trong /etc/my.cnf

Nếu các kết nối của bạn liên tục (mở qua mysql_pconnect), bạn có thể hạ những con số này xuống mức hợp lý như 600 (10 phút) hoặc thậm chí 60 (1 phút). Hoặc, nếu ứng dụng của bạn hoạt động tốt, bạn có thể để mặc định. Đây là tùy thuộc vào bạn.

Bạn phải đặt những thứ này như sau my.cnf(có hiệu lực sau khi mysqldđược khởi động lại):

[mysqld]
interactive_timeout=180
wait_timeout=180

Nếu bạn không muốn khởi động lại mysql, thì hãy chạy hai lệnh sau:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

Điều này sẽ không đóng các kết nối đã mở. Điều này sẽ khiến các kết nối mới đóng lại sau 180 giây.


Vì vậy, trong /etc/my.cnf tôi sẽ chỉ đặt wait_timeout=180?
Patrick

@Patrick Có, nhưng bạn cần đặt cả Interactive_timeout và Wait_timeout thành 180. Tôi đã cập nhật câu trả lời của mình cho câu trả lời của bạn.
RolandoMySQLDBA

Tệp này có thể ở nơi khác dev.mysql.com/doc/refman/5.1/en/option-files.html và các tùy chọn này có thể không được khám phá (tự viết chúng)
nicolallias
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.