Giá trị tối đa của wait_timeout mysql

Đám mây

Cấu trúc liên kết SkySQL

Phiên bản ES

Mặc định

AWS

Phân tích nhiều nút

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Phân tích nút đơn

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch phân tán

10. 5

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch được sao chép

10. 4

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 5

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch nút đơn

10. 4

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 5

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

GCP

Phân tích nhiều nút

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Phân tích nút đơn

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch phân tán

10. 5

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

28800 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch được sao chép

10. 4

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 5

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

Giao dịch nút đơn

10. 4

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 5

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

10. 6

600 (lựa chọn. 300, 600, 3600, 28800, 86400)

Tôi muốn mạo hiểm nói rằng vấn đề là với

General error: 2006 MySQL server has gone away
2. Nó được đặt thành 30 giây trên Máy chủ được chia sẻ của tôi và trên máy chủ cục bộ của tôi được đặt thành 28800

Nội dung chính Hiển thị

  • Máy chủ MySQL đã biến mất ví dụ về nhật ký lỗi
  • MySQL wait_timeout
  • Thời gian chờ kết nối MySQL trong cấu hình PHP
  • MySQL max_allowed_packet
  • MySQL innodb_log_file_size
  • Các nguyên nhân khác của máy chủ MySQL đã biến mất
  • Kết nối MySQL từ xa
  • Bộ ký tự và đối chiếu cơ sở dữ liệu MySQL
  • Vượt quá cài đặt max_connections của MySQL
  • Vẫn chưa được giải quyết?
  • Thẻ. apm, linux, mariadb, mysql, hiệu suất, máy chủ, quản trị hệ thống
  • Làm cách nào để sửa lỗi máy chủ MySQL Sqlstate HY000 2006 đã biến mất?
  • Tại sao máy chủ MySQL đã biến mất?
  • Làm cách nào để sửa lỗi máy chủ MySQL?
  • Sqlstate HY000 là gì?

Tôi thấy rằng tôi có thể thay đổi nó cho phiên, vì vậy bạn có thể đưa ra truy vấn. ĐẶT phiên wait_timeout=28800

CẬP NHẬT OP xác định rằng anh ấy cũng cần thay đổi biến

General error: 2006 MySQL server has gone away
3. Điều này có thể hoặc không cần thiết cho tất cả mọi người

Mã bên dưới hiển thị cài đặt trước và sau khi thay đổi để xác minh rằng nó đã được thay đổi

Vì vậy, hãy đặt wait_timeout=28800 (và Interactive_timeout = 28800) ở đầu truy vấn của bạn và xem nó có hoàn thành không

Hãy nhớ chèn thông tin đăng nhập db của riêng bạn thay cho

General error: 2006 MySQL server has gone away
4

CẬP NHẬT Ngoài ra, nếu điều này hoạt động, bạn muốn làm rõ những gì bạn đang làm bằng cách đặt wait_timeout cao hơn. Đặt nó thành 28800 là 8 giờ và rất nhiều

Sau đây là từ trang web này. Nó khuyên bạn nên đặt wait_timeout thành 300 - tôi sẽ thử và báo cáo lại kết quả của mình (sau một vài tuần)

biến wait_timeout đại diện cho lượng thời gian mà MySQL sẽ đợi trước khi ngắt kết nối nhàn rỗi. Biến wait_timeout mặc định là 28800 giây, tức là 8 giờ. Đó là rất nhiều

Tôi đã đọc trên các diễn đàn/blog khác nhau rằng việc đặt wait_timeout quá thấp (e. g. 30, 60, 90) có thể dẫn đến thông báo lỗi MySQL has gone gone. Vì vậy, bạn sẽ phải quyết định cấu hình của mình

query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "
";
var_dump($results);
echo "
"; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
";
var_dump($results);
echo "
"; class db { public $mysqli; public function __construct() { $this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); if (mysqli_connect_errno()) { exit(); } } public function __destruct() { $this->disconnect(); unset($this->mysqli); } public function disconnect() { $this->mysqli->close(); } function query($q, $resultset) { /* create a prepared statement */ if (!($stmt = $this->mysqli->prepare($q))) { echo("Sql Error: " . $q . ' Sql error #: ' . $this->mysqli->errno . ' - ' . $this->mysqli->error); return false; } /* execute query */ $stmt->execute(); if ($stmt->errno) { echo("Sql Error: " . $q . ' Sql error #: ' . $stmt->errno . ' - ' . $stmt->error); return false; } if ($resultset) { $result = $stmt->get_result(); for ($set = array(); $row = $result->fetch_assoc();) { $set[] = $row; } $stmt->close(); return $set; } } }

Máy chủ MySQL đã biến mất, có nghĩa là máy chủ MySQL (mysqld) đã hết thời gian chờ và đóng kết nối. Theo mặc định, MySQL sẽ đóng kết nối sau tám giờ (28800 giây) nếu không có gì xảy ra. Tuy nhiên, trong một số trường hợp, máy chủ web, DBA hoặc nhà phát triển ứng dụng của bạn có thể đã giảm cài đặt thời gian chờ này, được thảo luận bên dưới

Máy chủ MySQL đã biến mất, có thể là một lỗi khó giải quyết. Điều này một phần là do để giải quyết lỗi này; . Bài viết này bao gồm các giải pháp tôi đã thấy cho lỗi chung của máy chủ MySQL này. Nếu bạn tìm thấy một giải pháp không được liệt kê hoặc liên kết đến trên trang này, vui lòng gửi cho tôi một ghi chú hoặc để lại nhận xét

Giá trị tối đa của wait_timeout mysql

Máy chủ MySQL đã biến mất ví dụ về nhật ký lỗi

Hãy nhớ rằng lỗi này có thể được ghi lại theo một số cách, như được liệt kê bên dưới. Ngoài ra, đôi khi, lỗi chỉ là dấu hiệu của một vấn đề tiềm ẩn sâu hơn. Có nghĩa là lỗi có thể do sự cố hoặc lỗi trong ứng dụng kết nối hoặc dịch vụ từ xa của bạn. Trong trường hợp đó, bạn cần kiểm tra TẤT CẢ nhật ký lỗi liên quan với cùng một dấu thời gian để xác định xem có thể là nguyên nhân của một sự cố khác hay không. Các giải pháp Giám sát Hiệu suất Ứng dụng và các công cụ theo dõi Ngăn xếp PHP có thể hữu ích. Với suy nghĩ này, đây là các ví dụ về nhật ký lỗi của máy chủ MySQL đã biến mất lỗi

General error: 2006 MySQL server has gone away
____5
Warning: Error while sending QUERY packet
PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

MySQL wait_timeout

Lý do MySQL server has gone gone error thường là do MySQL’s wait_timeout bị vượt quá. MySQL wait_timeout là số giây máy chủ chờ hoạt động trên kết nối không tương tác trước khi đóng nó. Bạn nên đảm bảo thời gian chờ không được đặt quá thấp. Mặc định cho wait_timeout của MySQL là 28800 giây. Thông thường, nó được hạ xuống tùy ý. Điều đó nói rằng, bạn có thể đặt wait_timeout càng thấp mà không ảnh hưởng đến kết nối cơ sở dữ liệu, có thể là một dấu hiệu tốt về hiệu quả của cơ sở dữ liệu MySQL. Ngoài ra, kiểm tra các biến. net_read_timeout, net_write_timeout và interactive_timeout. Điều chỉnh hoặc thêm các dòng sau vào của tôi. cnf để đáp ứng yêu cầu của bạn

________số 8

Thời gian chờ kết nối MySQL trong cấu hình PHP

Hãy nhìn vào php của bạn. tập tin cấu hình ini. Bạn sẽ tìm thấy các tùy chọn cấu hình MySQL. Đảm bảo mysql. cài đặt connect_timeout không được đặt thấp hơn MySQL wait_timeout, đã thảo luận ở trên. Tùy chọn PHP mysql. connect_timeout không chỉ được sử dụng cho thời gian chờ kết nối. Đó cũng là khi chờ phản hồi đầu tiên từ máy chủ MySQL. Hãy thử tăng mysql. connect_timeout khớp hoặc vượt quá wait_timeout MySQL của bạn và đảm bảo rằng mysql. allow_persistent đang bật (mặc định = đã bật)

mysql.connect_timeout=90
mysql.allow_persistent=1

QUAN TRỌNG. Trước tiên, hãy đọc về PHP Kết nối cơ sở dữ liệu liên tục để hiểu các lợi ích và lưu ý

Ngoài ra, hãy điều chỉnh default_socket_timeout của PHP. Ví dụ: tập lệnh PHP có thể đang chạy truy vấn chậm. Tạo thời gian chờ sử dụng default_socket_timeout. Cuối cùng, nó thoát với lỗi "Máy chủ MySQL đã biến mất". Trước khi bạn gửi thư thù địch, vui lòng đọc ở đây trước. Đây là một đoạn trích

“PHP, theo mặc định, đặt thời gian chờ đọc là 60 giây cho các luồng. Điều này được đặt thông qua php. ini, default_socket_timeout. Giá trị mặc định này áp dụng cho tất cả các luồng không đặt giá trị thời gian chờ nào khác. mysqlnd không đặt bất kỳ giá trị nào khác và do đó các kết nối của các truy vấn chạy lâu có thể bị ngắt kết nối sau default_socket_timeout giây dẫn đến thông báo lỗi 2006 – MySQL Server đã ngừng hoạt động . ”

General error: 2006 MySQL server has gone away
0

Để xuyên suốt, hãy điều chỉnh cả max_execution_time và max_input_time vẫn trong php. ini, nếu cần thiết. Nếu thời gian thực thi của PHP dài hơn max_execution_time, thì máy chủ MySQL có thể bị ngắt kết nối

General error: 2006 MySQL server has gone away
1

MySQL max_allowed_packet

max_allowed_packet là kích thước tối đa của một gói. Kích thước mặc định là 4MB giúp máy chủ MySQL bắt các gói lớn (có thể không chính xác). Kể từ MySQL 8, mặc định đã được tăng lên 16 MB. Nếu mysqld nhận được một gói quá lớn, nó sẽ cho rằng có gì đó không ổn và đóng kết nối. Để khắc phục điều này, bạn nên tăng max_allowed_packet trong my. cnf, sau đó khởi động lại MySQL. Tối đa cho cài đặt này là 1GB. Ví dụ

General error: 2006 MySQL server has gone away
2

MySQL innodb_log_file_size

Bạn có thể cần tăng biến innodb_log_file_size MySQL trong tệp my. cấu hình cnf. MySQL của innodb_log_file_size phải bằng 25% của innodb_buffer_pool_size (nếu có thể, không ít hơn 20%). Hãy nhớ rằng giá trị này càng lớn thì càng mất nhiều thời gian để khôi phục sau sự cố cơ sở dữ liệu. (Nguồn. Cố vấn Phpmyadmin)

Điều này có nghĩa là ví dụ. nếu kích thước nhóm bộ đệm của bạn được đặt thành innodb_buffer_pool_size=16G và cài đặt innodb_log_files_in_group của bạn vẫn được đặt thành mặc định đề xuất là 2 tệp (innodb_log_files_in_group=2), thì kích thước innodb_log_file_size của bạn sẽ được đặt thành 2G. Thao tác này sẽ tạo hai (2) tệp nhật ký, mỗi tệp có dung lượng 2GB, tương đương với 25% của innodb_buffer_pool_size=16G

CẢNH BÁO. Bạn phải dừng máy chủ MySQL để thay đổi innodb_log_file_size hoặc innodb_log_files_in_group. Nếu bạn không, bạn có nguy cơ thảm họa. (Đọc. Hướng dẫn làm lại nhật ký MySQL. )

Các nguyên nhân khác của máy chủ MySQL đã biến mất

Kết nối MySQL từ xa

Hãy nhớ trước đó tôi đã đề cập rằng lỗi đôi khi chỉ là dấu hiệu của một vấn đề cơ bản sâu hơn. Ví dụ: các kết nối MySQL từ xa đến các dịch vụ của bên thứ 3. Sử dụng plugin xử lý thanh toán của bên thứ 3 cho osCommerce, Magento, v.v.

Bộ ký tự và đối chiếu cơ sở dữ liệu MySQL

Việc thay đổi bộ ký tự cơ sở dữ liệu mặc định thành latin1 và đối chiếu mặc định thành latin1_General_ci dường như đã giải quyết được vấn đề Máy chủ MySQL đã ngừng hoạt động trong một số trường hợp

Vượt quá cài đặt max_connections của MySQL

Max_connections đặt số lượng kết nối máy khách đồng thời tối đa được phép. Hãy cẩn thận với cài đặt này. Tình trạng cạn kiệt bộ nhớ và các tài nguyên khác có thể xảy ra khi đặt quá lớn và chi phí lập lịch trình cũng tăng lên. Theo hướng dẫn, hãy đặt max_connections thành khoảng gấp đôi số lượng kết nối máy khách đồng thời tối đa trước đó. e. g. , nếu sau một tháng hoạt động, số kết nối máy khách đồng thời tối đa là 114, thì hãy đặt thành max_connections=250. Trước khi bạn phát điên với cài đặt này, vui lòng đọc. Cách MySQL xử lý kết nối máy khách

Vẫn chưa được giải quyết?

Oracle đã tập hợp một trang tự trợ giúp tuyệt vời cho máy chủ MySQL đã biến mất lỗi. Trên trang đó, họ cũng đề nghị bạn đảm bảo rằng MySQL không dừng/khởi động lại trong khi truy vấn. trích đoạn