Đặt wait_timeout mysql

Trong một số trường hợp, các ứng dụng không thể đóng kết nối với Cơ sở dữ liệu mà ứng dụng đã không còn sử dụng kết nối đó nữa. Lúc đó các kết nối như vậy sẽ dễ rơi vào trạng thái “Kết nối không hoạt động”. Như vậy trình tự biến cơ bản phổ biến nhất dẫn đến trạng thái “Kết nối không hoạt động đang ngủ” như sau. close connection to the Data Department that application has not also used to connect that nữa. Lúc đó các kết nối như vậy sẽ dễ rơi vào trạng thái “Kết nối không hoạt động”. Như vậy trình tự biến cơ bản phổ biến nhất dẫn đến trạng thái “Kết nối không hoạt động đang ngủ” như sau

– PHP script thực thi kết nối tới MySQL

– Một vài truy vấn được thực thi nhưng sau đó script PHP phải thực hiện các nhiệm vụ khác tiêu tốn nhiều thời gian hơn mà không ngắt kết nối đến CSDL

– Cuối cùng, tập lệnh PHP đã hoàn thành và sau đó kết thúc tập lệnh hoạt động, lúc này mới tiếp tục kết nối với cơ sở dữ liệu MySQL

– Như vậy nếu mã PHP không thể thực hiện đóng kết nối tới CSDL sẽ có thể dẫn đến nhiều kết nối “Sleep Idle” trong khi rất nhiều tiến trình PHP vẫn giữ kết nối nhưng không làm gì cả

Trên hệ thống dịch vụ MySQL thường sẽ thấy hiện tượng gì ?

– Load hệ thống nâng cao

– Nhiều process nằm trong trạng thái rỗi của MySQL


Ví dụ liệt kê các kết nối đang ở trạng thái “Sleep Idle”

mysql> show full processlist;
+-------------------------------------------------------------------------------+
| Id     | User   | Host      | db       | Command | Time | State      | Info   |
+-------------------------------------------------------------------------------+
| 398780 | dbuser | localhost | database | Sleep   |  169 |            | NULL   |
| 399056 | dbuser | localhost | database | Sleep   |  129 |            | NULL   |
| 399491 | dbuser | localhost | database | Sleep   |   87 |            | NULL   |
+-------------------------------------------------------------------------------+


Một số cách giải cơ bản như sau

– Giảm thời gian mà truy vấn phải chạy để lấy kết quả, hãy truy vấn tối ưu có lệnh dài nhất giả định thời hạn, trả về dữ liệu tối ưu,

– Hệ thống dịch vụ MySQL có hỗ trợ cấu hình quy định thời gian dừng kết nối đang chế độ rảnh rỗi bằng 2 giá trị “wait_timeout” và “interactive_timeout” mà chúng ta sẽ tìm hiểu sau đây

I. Tìm hiểu về 2 biến cấu hình “wait_timeout” và “interactive_timeout”

II. Hướng dẫn đặt giá trị “wait_timeout” và “interactive_timeout” wait_timeout

Trong một số trường hợp, các ứng dụng không thể đóng kết nối với Cơ sở dữ liệu mà ứng dụng đã không còn sử dụng kết nối đó nữa. Lúc đó các kết nối như vậy sẽ dễ rơi vào trạng thái “Kết nối không hoạt động”. Như vậy trình tự biến cơ bản phổ biến nhất dẫn đến trạng thái “Kết nối không hoạt động đang ngủ” như sau

– PHP script thực thi kết nối tới MySQL

– Một vài truy vấn được thực thi nhưng sau đó script PHP phải thực hiện các nhiệm vụ khác tiêu tốn nhiều thời gian hơn mà không ngắt kết nối đến CSDL

– Cuối cùng, tập lệnh PHP đã hoàn thành và sau đó kết thúc tập lệnh hoạt động, lúc này mới tiếp tục kết nối với cơ sở dữ liệu MySQL

– Như vậy nếu mã PHP không thể thực hiện đóng kết nối tới CSDL sẽ có thể dẫn đến nhiều kết nối “Sleep Idle” trong khi rất nhiều tiến trình PHP vẫn giữ kết nối nhưng không làm gì cả


Trên hệ thống dịch vụ MySQL thường sẽ thấy hiện tượng gì ?

– Load hệ thống nâng cao

– Nhiều process nằm trong trạng thái rỗi của MySQL


Ví dụ liệt kê các kết nối đang ở trạng thái “Sleep Idle” interactive_timeout

Trong một số trường hợp, các ứng dụng không thể đóng kết nối với Cơ sở dữ liệu mà ứng dụng đã không còn sử dụng kết nối đó nữa. Lúc đó các kết nối như vậy sẽ dễ rơi vào trạng thái “Kết nối không hoạt động”. Như vậy trình tự biến cơ bản phổ biến nhất dẫn đến trạng thái “Kết nối không hoạt động đang ngủ” như sau

– PHP script thực thi kết nối tới MySQL

– Một vài truy vấn được thực thi nhưng sau đó script PHP phải thực hiện các nhiệm vụ khác tiêu tốn nhiều thời gian hơn mà không ngắt kết nối đến CSDL

– Như vậy nếu mã PHP không thể thực hiện đóng kết nối tới CSDL sẽ có thể dẫn đến nhiều kết nối “Sleep Idle” trong khi rất nhiều tiến trình PHP vẫn giữ kết nối nhưng không làm gì cả


Trên hệ thống dịch vụ MySQL thường sẽ thấy hiện tượng gì ?

– Load hệ thống nâng cao

– Nhiều process nằm trong trạng thái rỗi của MySQL


Ví dụ liệt kê các kết nối đang ở trạng thái “Sleep Idle”

Một số cách giải cơ bản như sau

– Giảm thời gian mà truy vấn phải chạy để lấy kết quả, hãy truy vấn tối ưu có lệnh dài nhất giả định thời hạn, trả về dữ liệu tối ưu,

– Hệ thống dịch vụ MySQL có hỗ trợ cấu hình quy định thời gian dừng kết nối đang chế độ rảnh rỗi bằng 2 giá trị “wait_timeout” và “interactive_timeout” mà chúng ta sẽ tìm hiểu sau đây

Cấu hình biến thông báo “wait_timeout“

– Loại. số nguyên

– Default value. 28800 (8 giờ)

# mysql --help | grep “my.cnf"
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

– Giá trị nhỏ nhất có thể được quy định. 1/etc/của tôi. cnf”

# vi /etc/my.cnf
wait_timeout=300
interactive_timeout=300

– Giá trị lớn nhất có thể được quy định. 31536000

# /etc/init.d/mysqld restart

– Phân loại nhóm. Toàn cầu, phiên

mysql> show global variables like '%timeout%';
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| interactive_timeout        | 300      |
| wait_timeout               | 300      |
+----------------------------+----------+

+ Ý nghĩa của value “wait_timeout“wait_timeout” và “interactive_timeout” thành công. Nên nhớ cần phân loại vấn đề trang web bạn đang hoạt động yêu cầu thời gian kết nối tới Cơ sở Dữ liệu lâu như nguồn Magento, Cs-Cart không có giới hạn. Chúc các bạn thành công