Khi sử dụng máy tính người dùng thường gặp những lỗi phần mềm chẳng hạn như lỗi MySQL Server Has Gone Away, là điều không thể tránh khỏi. Đối với người dùng không am hiểu về kỹ thuật, khắc phục lỗi có thể là thách thức khá lớn, đòi hỏi nhiều thời gian và công sức. Hiểu rõ nguyên nhân gây ra lỗi sẽ giúp bạn xử lý nhanh chóng hơn. Trong bài viết này, MONA Host chia sẻ đến bạn nguyên nhân và cách giải quyết lỗi MySQL Server Has Gone Away hiệu quả, cùng khám phá nhé.

Lỗi Mysql Server Has Gone Away là gì?

Lỗi MySQL Server Has Gone Away xảy ra khi kết nối giữa máy khách (client) và máy chủ cơ sở dữ liệu MySQL gặp gián đoạn trong quá trình truy vấn, dẫn đến máy khách không thể liên lạc với máy chủ.

Nguyên nhân chủ yếu dẫn đến lỗi này là do thời gian chờ (timeout) giữa máy khách và máy chủ vượt mức cho phép. MySQL thiết lập thời gian chờ mặc định là 8 giờ, tuy nhiên, quản trị viên có thể điều chỉnh con số này theo nhu cầu. Khi vượt quá thời gian chờ, kết nối sẽ bị ngắt.

Lỗi “Mysql Server Has Gone Away” là gì?

Ngoài ra, lỗi này cũng có thể xảy ra nếu truy vấn yêu cầu truyền tải hoặc nhận dữ liệu lớn hơn khả năng xử lý của máy chủ, dẫn đến máy chủ quá tải và không thể hoàn thành tác vụ.

Với người dùng website mã nguồn WordPress, lỗi ERROR 2006 (HY000) MySQL server has gone away xảy ra khi hosting bị giới hạn tài nguyên. Để khắc phục, bạn cần điều chỉnh các tham số MySQL như max_allowed_packet (kích thước gói tin tối đa) và wait_timeout (thời gian chờ), đồng thời tối ưu hóa truy vấn và nâng cấp tài nguyên máy chủ nếu cần thiết.

>> PHPMyAdmin là gì?

Nguyên nhân gây ra lỗi Mysql Server Has Gone Away

Để xử lý lỗi MySQL Server Has Gone Away một cách hiệu quả, đầu tiên bạn cần xác định nguyên nhân gây ra lỗi này. Một số nguyên nhân thường gặp dẫn đến lỗi Mysql server là:

Server hết thời gian chờ

Khi MySQL Server phát hiện một kết nối không hoạt động trong một khoảng thời gian nhất định, nó sẽ tự động đóng kết nối đó để bảo vệ tài nguyên của hệ thống. Khoảng thời gian này được gọi là thời gian chờ (timeout). Nếu mã nguồn của bạn mất quá nhiều thời gian để xử lý một truy vấn, kết nối đó có thể hết thời gian chờ và bị đóng. Khi điều này xảy ra, bạn sẽ nhận được thông báo lỗi Mysql Server Has Gone Away.

Server hết thời gian chờ

Để khắc phục lỗi này, bạn có thể tăng thời gian chờ kết nối bằng cách chỉnh sửa giá trị của biến wait_timeout trong tệp cấu hình my.cnf của máy chủ MySQL. Thay đổi giá trị này sẽ kéo dài thời gian chờ trước khi một kết nối không hoạt động bị đóng.

Ngoài ra, bạn cũng nên kiểm tra mã nguồn của mình để xác định nguyên nhân khiến truy vấn mất quá nhiều thời gian xử lý. Có thể do truy vấn không được tối ưu hóa hoặc có vấn đề nào đó trong cơ sở dữ liệu. Khi đã xác định được nguyên nhân, bạn có thể thực hiện các biện pháp để tối ưu hóa truy vấn và cải thiện hiệu suất của mã nguồn, từ đó tránh được lỗi Mysql Server Has Gone Away.

>> Sql server là gì?

Truy vấn MySQL lỗi

Một nguyên nhân khác dẫn đến lỗi Mysql Server Has Gone Away có thể bắt nguồn từ các vấn đề liên quan đến truy vấn MySQL chẳng hạn như:

Truy vấn MySQL lỗi
  • Kích thước truy vấn quá lớn: Khi truy vấn trả về một lượng lớn dữ liệu, kích thước gói tin có thể vượt quá giới hạn mà máy chủ MySQL cho phép. Điều này thường xảy ra với các câu lệnh SELECT hoặc INSERT có dữ liệu lớn. Để giải quyết, bạn có thể tăng giới hạn kích thước gói tin bằng cách cấu hình tham số max_allowed_packet trên máy chủ MySQL.
  • Lỗi trong truy vấn: Nếu truy vấn chứa lỗi cú pháp hoặc lỗi logic, máy chủ MySQL có thể đóng kết nối. Do đó, hãy đảm bảo rằng truy vấn của bạn được viết đúng cú pháp và tuân thủ các quy tắc của MySQL để tránh tình trạng này.
  • Lỗi kết nối mạng: Sự cố kết nối mạng giữa ứng dụng và máy chủ MySQL có thể dẫn đến mất kết nối. Hãy kiểm tra đường truyền mạng và đảm bảo rằng không có sự cố mạng gây ra vấn đề này.

Ngoài ra, lỗi này cũng có thể xảy ra khi người dùng chủ động đóng kết nối để thực hiện một truy vấn khác.

Timeout từ TCP / IP quá hạn

Lỗi MySQL Server Has Gone Away có thể xảy ra khi kết nối TCP/IP giữa ứng dụng và máy chủ MySQL bị mất hoặc thời gian chờ vượt quá giới hạn cho phép như:

  • Kết nối hết thời gian chờ: Khi thời gian chờ kết nối đã hết và không nhận được phản hồi từ máy chủ MySQL, lỗi này có thể xảy ra.
  • Truy vấn mất quá nhiều thời gian: Nếu một truy vấn MySQL mất quá nhiều thời gian để hoàn thành, thời gian chờ truy vấn có thể vượt quá giới hạn và dẫn đến lỗi ERROR 2006 (HY000) MySQL server has gone away
  • Lỗi mạng: Mất kết nối mạng hoặc mạng chậm cũng có thể dẫn đến lỗi MySQL Server Has Gone Away

Client vô hiệu hóa việc kết nối lại sau khi timeout

Nếu kết nối bị gián đoạn do hết thời gian chờ, thông thường máy chủ hoặc các thành phần khác sẽ tự động thực hiện kết nối lại. Tuy nhiên, khi máy khách (client) vô hiệu hóa tính năng tự động kết nối lại này, việc mất kết nối với máy chủ sẽ vẫn xảy ra như trước.

Client vô hiệu hóa việc kết nối lại sau khi Timeout

Điều này có nghĩa là, sau khi một kết nối bị gián đoạn do timeout, nếu không có cơ chế tự động kết nối lại được kích hoạt, bạn sẽ phải thực hiện kết nối lại thủ công. Việc này có thể gây gián đoạn trong quá trình truyền tải dữ liệu và làm giảm hiệu suất của ứng dụng

Gửi yêu cầu sai lệch đến máy chủ

Khi gửi yêu cầu không đúng đến máy chủ MySQL, bạn có thể gặp lỗi MySQL Server Has Gone Away, một vài lý do phổ biến thường gặp như:

  • Truy vấn cú pháp sai: Truy vấn có cú pháp không chính xác khiến máy chủ MySQL không thể hiểu và xử lý.
  • Kiểu dữ liệu không phù hợp: Truy vấn sử dụng kiểu dữ liệu không đúng, ví dụ như cố gắng lưu trữ một giá trị không phải là số vào cột số.
  • Không tuân thủ quy tắc MySQL: MySQL có các quy tắc ngữ cảnh mà truy vấn phải tuân theo, vi phạm những quy tắc này có thể gây ra lỗi.

Gửi gói tin có kích thước quá lớn tới máy chủ MySQL

Lỗi MySQL Server Has Gone Away thường xuất hiện khi bạn gửi gói tin vượt quá kích thước giới hạn đến máy chủ MySQL. Giới hạn kích thước gói tin mặc định là 16MB, nếu gói tin của bạn lớn hơn giới hạn này, kết nối có thể bị đóng lại.

Để tránh lỗi này, hãy đảm bảo rằng kích thước gói tin của bạn nhỏ hơn giới hạn được cấu hình trên máy chủ. Ngoài ra, bạn có thể nâng cấp lên phiên bản MySQL mới hơn để hỗ trợ kích thước gói tin lớn hơn.

INSERT hoặc thay thế query số lượng quá lớn

Một nguyên nhân khác có thể dẫn đến lỗi MySQL Server Has Gone Away là do bạn thực hiện INSERT hoặc UPDATE quá nhiều hàng trong một truy vấn. Để tránh tình trạng này, bạn nên giảm số lượng hàng được gửi trong mỗi truy vấn bằng cách chia thành nhiều truy vấn nhỏ hơn.

INSERT hoặc thay thế query số lượng quá lớn

Ví dụ, nếu bạn cần thêm 1.000 hàng vào một bảng, thay vì sử dụng một truy vấn INSERT với 1.000 hàng, hãy chia thành 10 truy vấn INSERT, mỗi truy vấn thêm 100 hàng. Việc này sẽ giúp giảm tải cho máy chủ MySQL và hạn chế khả năng xảy ra lỗi xảy ra.

Cách khắc phục lỗi Mysql Server Has Gone Away hiệu quả

Để khắc phục lỗi MySQL Server Has Gone Away hiệu quả, bạn có thể thử các cách sau:

Tăng set biến Global MySQL

Để khắc phục lỗi MySQL Server Has Gone Away do kích thước gói tin quá lớn, bạn có thể tăng giá trị biến toàn cục max_allowed_packet tạm thời trong MySQL. Dưới đây là các bước thực hiện:

Mở terminal và đăng nhập vào MySQL với quyền root.

Nhập lệnh sau để đăng nhập:

mysql -u root -p

Sau khi đăng nhập, nhập mật khẩu của bạn.

Tiếp theo, nhập lệnh sau để tăng giá trị max_allowed_packet lên 32MB:

sql> SET GLOBAL max_allowed_packet=33554432

Nhấn Enter để thực hiện lệnh.

Giá trị 33554432 tương đương với 32MB, và bạn có thể tăng giá trị này nếu cần thiết. Sau khi thực hiện các bước này, bạn có thể tiếp tục quá trình import dữ liệu.

Cấu hình file dịch vụ MySQL

Để khắc phục lỗi MySQL Server Has Gone Away do gói tin quá lớn một cách lâu dài, bạn có thể điều chỉnh cấu hình trong tệp /etc/my.cnf. Các bước cụ thể như sau:

Mở tệp /etc/my.cnf bằng trình chỉnh sửa văn bản.

Tìm phần [mysqld].

Thêm dòng max_allowed_packet=32M vào cuối phần [mysqld].

Lưu và đóng tệp /etc/my.cnf.

Khởi động lại dịch vụ MySQL bằng lệnh:

/etc/init.d/mysql restart

Giá trị 32M tương đương với 32MB. Bạn có thể điều chỉnh giá trị này dựa trên nhu cầu thực tế của mình.

>> Cách sửa lỗi Server IP address could not be found

Một số ví dụ về lỗi MySQL server has gone away

Một trong những lỗi thường gặp khi làm việc với MySQL là lỗi 2006 MySQL server has gone away. Lỗi này có thể có nhiều nguyên nhân khác nhau, và cũng có nhiều cách để khắc phục. Sau đây MONA Host sẽ liệt kê một số lỗi mà người dùng thường hay gặp:

MySQL wait_timeout

Một trong những nguyên nhân phổ biến dẫn đến lỗi MySQL Server Has Gone Away là giá trị wait_timeout của MySQL quá thấp. Tham số này xác định thời gian mà máy chủ sẽ duy trì kết nối với một thiết bị trước khi ngắt kết nối. Mặc định, wait_timeout được đặt là 28800 giây, nhưng bạn có thể điều chỉnh giá trị này theo nhu cầu.

MySQL wait_timeout

Điều chỉnh wait_timeout không ảnh hưởng đến hiệu suất hay tính ổn định của kết nối cơ sở dữ liệu. Ngoài ra, bạn cũng nên kiểm tra và cấu hình lại các tham số khác như net_read_timeoutnet_write_timeout trong tệp my.cnf để áp dụng các thay đổi mới.

Lỗi PHP config “MySQL connect timeout”

mysql.connect_timeout không chỉ là thời gian chờ để kết nối với MySQL mà còn là thời gian chờ để nhận được phản hồi đầu tiên từ MySQL. Bạn có thể kiểm tra trạng thái của mysql.allow_persists bằng cách điều chỉnh mysql.connect_timeout sao cho phù hợp hoặc lớn hơn wait_timeout trong MySQL.

Bạn cũng có thể thay đổi default_socket_timeout của PHP.

Ví dụ: Đặt thời gian chờ sử dụng default_socket_timeout cho các tập lệnh PHP chạy lâu. Lỗi “MySQL server has gone away” sẽ được khắc phục.

Ngoài ra, bạn có thể tham khảo thêm một số thông tin về lỗi này:

Tham số thời gian chờ mặc định PHP được cấu hình trong php.ini, default_socket_timeout. Nếu không có tham số thời gian chờ nào khác được đặt thì tham số mặc định này sẽ được áp dụng. Mysqlnd không đặt bất kỳ tham số nào khác và do đó các kết nối của các truy vấn kéo dài có thể bị ngắt sau giây default_socket_timeout, gây ra lỗi 2006 – MySQL Server đã biến mất.”

Nếu cần, bạn cũng có thể điều chỉnh max_execution_timemax_input_time trong php.ini, khi thời gian kết nối với PHP vượt quá max_execution_time, bạn sẽ bị ngắt kết nối bởi MySQL.

>> Nguyên nhân và cách fix lỗi Server Execution Failed

MySQL max_allowed_packet

max_allowed_packet dùng để xác định kích thước gói dữ liệu lớn nhất mà MySQL có thể gửi hoặc nhận. Giá trị mặc định của nó là 4MB cho các phiên bản MySQL trước 8.0, và 16MB cho các phiên bản từ 8.0 trở lên. Nếu bạn cố gắng gửi hoặc nhận một tập tin vượt quá giới hạn này, MySQL sẽ ngắt kết nối và báo lỗi. Để khắc phục điều này, bạn cần chỉnh sửa tệp my.cnf và tăng giá trị max_allowed_packet lên một mức phù hợp với nhu cầu của bạn, tối đa là 1GB. Sau đó, bạn phải khởi động lại MySQL để áp dụng thay đổi.

MySQL max_allowed_packet

MySQL innodb_log_file_size

Bạn có thể điều chỉnh giá trị của innodb_log_file_size, nhưng nó phải bằng ít nhất 20% và không quá 25% của innodb_buffer_pool_size. Giá trị này càng cao thì thời gian phục hồi dữ liệu khi xảy ra sự cố càng ngắn.

Ví dụ: Nếu bạn thiết lập innodb_buffer_pool_size = 16G và để mặc định innodb_log_files_in_group là ( innodb_log_files_in_group = 2 ), thì bạn nên đặt innodb_log_file_size là 2G. Khi đó, sẽ có 2 tập tin nhật ký có dung lượng là 2GB, tương đương với 25% innodb_buffer_pool_size = 16G.

Lưu ý: Khi bạn thay đổi innodb_log_file_size hoặc innodb_log_files_in_group, bạn phải dừng MySQL, nếu không sẽ gây ra lỗi cho hệ thống.

Hy vọng với bài viết trên của MONA Host đã giúp bạn có thêm thông tin về lỗi mysql server has gone away. Nếu bạn vẫn còn thắc mắc hoặc muốn biết thêm về các lỗi khác liên quan đến MySQL Server, hãy để lại bình luận dưới đây để đội ngũ của MONA Host hỗ trợ giải đáp cho bạn nhanh chóng.

Kết nối với mình qua

Mình là Võ Nguyên Thoại, hiện tại đang là Co-founder và CTO của MONA Host - công ty chuyên cung cấp các dịch vụ cloud hosting, vps và hạ tầng thuộc phân khúc cao cấp tại thị trường Việt Nam, đồng thời cũng là Group CTO của The MONA, công ty chủ quản của MONA Media, MONA Software và MONA Host, với hệ sinh thái đầy đủ và hoàn chỉnh để phát triển doanh nghiệp trên môi trường internet.

Với kinh nghiệm làm việc chuyên sâu hơn 15 năm trong lĩnh vực CNTT, trải dài từ mảng hạ tầng, hệ thống, phát triển phần mềm và devops, Thoại mong muốn đóng góp các kinh nghiệm và kiến thức của mình tại Mona để xây dựng một hạ tầng CNTT với các trải nghiệm mới, cao cấp hơn, mượt mà hơn, tin cậy hơn và xoá bỏ khoảng cách giữa các doanh nghiệp và công cuộc chuyển đổi số với đội ngũ chuyên viên kỹ thuật cao luôn hỗ trợ khách hàng 24/7.

Hy vọng với những kiến thức, hiểu biết Thoại chia sẻ sẽ hữu ích đến các bạn độc giả quan tâm!

Bài viết liên quan

IP Tĩnh Là Gì? Các Bước Cấu Hình Static IP Chi Tiết Nhất
22 Tháng Một, 2025
IP Tĩnh Là Gì? Các Bước Cấu Hình Static IP Chi Tiết Nhất
IP tĩnh là thuật ngữ quen thuộc trong lĩnh vực mạng máy tính, đóng vai trò quan trọng trong việc quản lý và duy trì kết nối ổn định cho các thiết bị. Không giống các loại IP thông thường, IP tĩnh có tính cố định, giúp tăng cường hiệu suất và đảm bảo sự...

MONA.Host

CCU Là Gì? Tất Tần Tật Thông Tin Cần Biết Về CCU
21 Tháng Một, 2025
CCU Là Gì? Tất Tần Tật Thông Tin Cần Biết Về CCU
Hiệu suất và sự ổn định của một nền tảng trực tuyến phụ thuộc rất nhiều vào khả năng xử lý đồng thời lượng người dùng truy cập. Để đo lường yếu tố này, người ta sử dụng chỉ số CCU. Nếu bạn chưa hiểu rõ CCU là gì, hãy theo dõi nội dung tiếp...

MONA.Host

PHPMyAdmin Là Gì? Các Bước Cài Đặt PHPMyAdmin Chi Tiết
17 Tháng Một, 2025
PHPMyAdmin Là Gì? Các Bước Cài Đặt PHPMyAdmin Chi Tiết
PHPMyAdmin được biết đến là một công cụ quản lý cơ sở dữ liệu MySQL phổ biến, hỗ trợ trên hầu hết các hệ điều hành. Với giao diện web trực quan và thân thiện, người dùng dễ dàng nhập, xuất và thao tác với dữ liệu theo nhiều định dạng khác nhau. Để có...

MONA.Host

Giao Thức UDP Là Gì? Ưu Nhược Điểm Và Ứng Dụng Của UDP
10 Tháng Một, 2025
Giao Thức UDP Là Gì? Ưu Nhược Điểm Và Ứng Dụng Của UDP
User Datagram Protocol (UDP) là một trong hai giao thức chính để truyền dữ liệu qua mạng Internet, cùng với TCP (Transmission Control Protocol). Trong bài viết này, MONA Host sẽ chia sẻ chi tiết về UDP là gì, các đặc điểm nổi bật và ứng dụng thực tế của giao thức này mang lại...

Võ Nguyên Thoại

Lỗi 405 Not Allowed Là Gì? Cách Khắc Phục Lỗi HTTP Error 405
17 Tháng Mười Hai, 2024
Lỗi 405 Not Allowed Là Gì? Cách Khắc Phục Lỗi HTTP Error 405
Lỗi 405 là một trong những lỗi phổ biến thường gặp và gây trở ngại cho quá trình trải nghiệm internet của người dùng. “HTTP verb used to access this page is not allowed” mã trạng thái HTTP phản ánh rằng máy chủ đã nhận được yêu cầu nhưng từ chối xử lý vì phương...

Võ Nguyên Thoại

Lỗi 522 Là Gì? Nguyên Nhân Và Cách Khắc Phục Error 522
16 Tháng Mười Hai, 2024
Lỗi 522 Là Gì? Nguyên Nhân Và Cách Khắc Phục Error 522
Lỗi 522 là lỗi thường gặp khi truy cập website và làm gián đoạn kết nối giữa máy chủ và trình duyệt. Khi xảy ra lỗi này, trang website sẽ không tải được và hiển thị thông báo “Connection Timed Out”. Vậy cụ thể lỗi 522 là gì? Khắc phục lỗi Error 522 như thế...

Võ Nguyên Thoại

Cơ Chế Bảo Mật HSTS Là Gì? Cài Đặt HSTS Cho Nginx Chi Tiết
16 Tháng Mười Hai, 2024
Cơ Chế Bảo Mật HSTS Là Gì? Cài Đặt HSTS Cho Nginx Chi Tiết
Nhằm tăng cường bảo mật thông tin, áp dụng các giao thức an toàn là yêu cầu thiết yếu để bảo vệ thông tin quan trọng của người dùng và dữ liệu trực tuyến của cá nhân hay doanh nghiệp. Một trong những giải pháp bảo mật được áp dụng phổ biến hiện nay là...

Võ Nguyên Thoại

Lỗi 400 Là Gì? Cách Khắc Phục error 400 Bad Request Hiệu Quả
13 Tháng Mười Hai, 2024
Lỗi 400 Là Gì? Cách Khắc Phục Error 400 Bad Request Hiệu Quả
Lỗi 400 là gì? Bạn đã bao giờ gặp phải thông báo "400 Bad Request" hoặc "HTTP Error 400 Bad Request" khi truy cập một trang web nào đó chưa? Đây là một lỗi khá phổ biến, gây gián đoạn và ảnh hưởng đến trải nghiệm của người dùng khi truy cập vào website của...

Võ Nguyên Thoại

Ổ Cứng NAS Là Gì? Khác Biệt Giữa NAS, SAN, Cloud Và DAS
11 Tháng Mười Hai, 2024
Ổ Cứng NAS Là Gì? Khác Biệt Giữa NAS, SAN, Cloud Và DAS
Trong thời đại công nghệ 4.0 bùng nổ như hiện nay thì nhu cầu lưu trữ dữ liệu và chia sẻ dữ liệu an toàn là mối quan tâm hàng đầu của người dùng. Bên cạnh những phương thức lưu trữ dữ liệu phổ biến như USB, ổ cứng di động,...thì thiết bị lưu trữ...

Võ Nguyên Thoại

Let’s Encrypt Là Gì? Hướng Dẫn Chi Tiết Cách Tạo Let’s Encrypt SSL
09 Tháng Mười Hai, 2024
Let’s Encrypt Là Gì? Hướng Dẫn Chi Tiết Cách Tạo Let’s Encrypt SSL
Let’s Encrypt là một cơ quan cấp chứng chỉ SSL/TLS miễn phí được nhiều cá nhân và doanh nghiệp sử dụng, nhằm mục đích thúc đẩy quá trình truyền tải dữ liệu trên Internet an toàn và hiệu quả hơn. Được thành lập bởi Internet Security Research Group (ISRG), Let’s Encrypt mang đến giải pháp...

MONA.Host

IDS Là Gì? Khác Biệt Giữa IDS, IPS và Tường Lửa Chi Tiết
04 Tháng Mười Hai, 2024
IDS Là Gì? Khác Biệt Giữa IDS, IPS và Tường Lửa Chi Tiết
Trước bối cảnh công nghệ 4.0 ngày càng phát triển, song song với nhiều lợi ích vượt trội mà nền tảng số mang lại thì đây cũng là môi trường màu mỡ đối với những kẻ hacker đang nhắm đến hàng triệu website hay dữ liệu được lưu trữ trên internet. Để bảo vệ hệ...

Võ Nguyên Thoại

SaaS Là Gì? Tất Tần Tật Điều Cần Biết Về Software as a Service
04 Tháng Mười Hai, 2024
SaaS Là Gì? Tất Tần Tật Điều Cần Biết Về Software as a Service
Trong thời kỳ công nghệ 4.0 bùng nổ, các phần mềm đóng vai trò quan trọng trong quá trình tối ưu hóa hoạt động doanh nghiệp. Trong số đó có thể kể đến như phần mềm trên nền tảng đám mây SaaS được ứng dụng rộng rãi nhờ tính năng mở rộng và tiện ích...

Võ Nguyên Thoại

Nhận các thông báo mới từ MONA.Host?

Đăng ký để nhận các bài nghiên cứu, blog, thông tin mới nhất từ chúng tôi

    Email
    Họ tên