Magento MySQL đã lỗi


14

Tôi đang gặp vô số vấn đề kỳ lạ trên Magento CE 1.7.0.2. Trong các hoạt động bình thường, đôi khi trang web sẽ tạo Trang lỗi Magento ( Đã xảy ra lỗi khi xử lý yêu cầu của bạn ) trên cả frontend và backend. Xem báo cáo liên quan, tôi thấy thông báo sau:

"SQLSTATE[HY000] [2006] MySQL server has gone away"

Đôi khi, nhưng hiếm hơn, thông báo báo cáo sẽ đọc:

 Connection reset by peer

Tôi đã xem var> log> system.logMySQL has gone awaylỗi được kèm theo như sau:

Warning: PDO::__construct(): MySQL server has gone away  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129
Error while reading greeting packet. PID=1863  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129

Ngoài ra, lỗi sau dường như xảy ra đối với mọi yêu cầu, cũng như các MySQL has gone awaylỗi:

 Warning: include(File.php): failed to open stream: No such file or directory  in /var/www/html/domain.com/live/lib/Varien/Autoload.php on line 93
 Warning: include(): Failed opening 'File.php' for inclusion

Tôi đã xem hầu hết các bài báo tôi có thể tìm thấy về điều này và sửa lại các tham số cơ sở dữ liệu cho đến khi những con bò về nhà nhưng lỗi vẫn còn.

Sau khi theo dõi một QnA khác về trình biên dịch, tôi nhận thấy rằng trang quản trị System> Tools> Compilation hoàn toàn trống. Tôi nghĩ rằng đây là tất cả các lỗi liên quan nhưng bất kỳ cái nhìn sâu sắc nào về gỡ lỗi hoặc nguyên nhân sẽ rất hữu ích.

Tôi xin lỗi nếu điều này không mạch lạc; Tôi đã thức khoảng 42 giờ, vì vậy xin vui lòng yêu cầu làm rõ. Cảm ơn bạn.

- cập nhật -

Ngăn xếp máy chủ của tôi cho rõ ràng:

PHP 5.5.4 (PHP-FPM)
Nginx 1.4.2
MySQL 5.5.33

- cập nhật -

Nó xảy ra với tôi (sau một số giấc ngủ) mà tôi chưa bao giờ chỉ định - cơ sở mã PHP và db db nằm trên các máy chủ phần cứng riêng biệt - rất quan trọng để biết liệu bạn sẽ giúp tôi không !! Tôi xin lỗi.


1
Bạn đang sử dụng kết nối cơ sở dữ liệu liên tục? Nếu vậy, hãy thử vô hiệu hóa chúng. Tôi cũng sẽ kiểm tra nhật ký mysql để xem nếu có lỗi ở đó hoặc nếu nó thực sự khởi động lại so với chỉ kết nối bị hủy.
davidalger

Thx David, theo đuôi các bản ghi MySQL và DB không bao giờ bị tấn công khi xảy ra lỗi. Tôi đã sử dụng các kết nối liên tục, vô hiệu hóa không giúp được gì :(
Jongosi

1
Bạn có nghĩ rằng kết nối là xấu. Một nguyên nhân của lỗi đó là DB không bao giờ nhận được thông báo. Hãy thử gỡ lỗi bằng cách sử dụng thông tin kết nối từ local.xml để gọi các hàm mysqli. Xem những gì xảy ra.
SH-

cảm ơn bạn, dường như đã khắc phục sự cố của tôi khi chỉnh sửa tệp cục bộ

Câu trả lời:


9

Điều này chủ yếu là do bất kỳ hai lý do dưới đây

  1. Máy chủ đã hết thời gian và đóng kết nối.
    sửa lỗi: thử tăng wait_timeoutbiến trong my.cnf/my.ini tệp cấu hình mysqld của bạn .
  2. Máy chủ đánh rơi một gói không chính xác hoặc quá lớn.
    sửa chữa: tăng giới hạn kích thước gói tối đa bằng cách tăng giá trị max_allowed_packettrong my.cnf/my.ini tệp.

Vui lòng kiểm tra các tập tin nếu bạn đang cố gắng để có được một cái gì đó mất quá nhiều thời gian hoặc không thể áp dụng.


Thx Anshu, tôi đang theo dõi nhật ký truy vấn MySQL và cơ sở dữ liệu không bao giờ được yêu cầu. Ngoài ra, nếu tôi khởi động lại máy chủ, đôi khi có thể xảy ra lỗi trong vòng 20 giây kể từ khi máy chủ trực tuyến - quá ngắn để cài đặt mặc định đến hết thời gian chờ. Tôi đặt max_allowed_packetthành 2G và wait_timout86400, vẫn không giúp được gì.
Jongosi

Vui lòng kiểm tra xem kết nối cơ sở dữ liệu có phù hợp hay không, kiểm tra tệp ứng dụng / etc / local.xml của bạn
Anshu Mishra

Thx Anshu, vâng, đúng rồi - kết nối xảy ra khoảng 68% yêu cầu
Jongosi

6

Vấn đề đã được giải quyết! Cảm ơn tất cả sự giúp đỡ. Đây là sự cố tường lửa phần cứng với máy chủ web, ngay cả sau khi chúng bị vô hiệu hóa.

Như được xác nhận bởi nhóm máy chủ của 1 & 1 , tường lửa phần cứng đã được định cấu hình chính xác, nhưng chúng đã chặn không chính xác lưu lượng hợp lệ giữa máy chủ tệp và máy chủ db khoảng 25% thời gian.

Chúng tôi đã cấu hình iptables thay thế và tắt hoàn toàn tường lửa phần cứng. 100% sẵn có ngay bây giờ.


2
Ôi trời! Tường lửa lẻ tẻ phải yêu loại vấn đề đó. Vui mừng bạn đã nhận nó được sắp xếp. :)
davidalger

Vấn đề tương tự ở đây và có vẻ như giải pháp của bạn cũng sẽ phù hợp với chúng tôi. Gonna nói chuyện 1 & 1 quá. Có sự hỗ trợ giúp bạn trong bất kỳ cách nào? Tôi có thể liên lạc với bạn? Twitter? Facebook? Xin vui lòng xem hồ sơ của tôi để biết chi tiết. Cảm ơn
webDEVILopers

2

Tôi đã gặp vấn đề tương tự đối với Magento 2.1 và nhật ký lỗi mysql của tôi đã hiển thị lỗi sau nhiều lần trong quá trình "MySQL đã biến mất":

...[Warning] File Descriptor 1228 exceeded FD_SETSIZE=1024

Để giải quyết vấn đề này, trước tiên hãy kiểm tra open filesgiá trị với $ ulimit -n, trong trường hợp của tôi là 256.

Thứ hai, thêm vào table_open_cache = {that ulimit -n value}dưới [mysqld]phần trong của bạn my.cnf.

Bây giờ khởi động lại MySQL và hy vọng bạn quay lại hành động.

Lưu ý: Tôi đang chạy Magento 2.1 cục bộ trên OS X El Capitan với bản dựng PHP 7.1 và MySQL 5.7.15 với Homebrew. Nhưng tôi cá rằng giải pháp này cũng sẽ hoạt động trên các thiết lập cũ hơn hoặc khác nhau.


1

Chỉnh sửa tệp app / etc / local.xml trong thư mục Magento của bạn, thay thế mục nhập cho máy chủ thành '127.0.0.1' thay vì 'localhost'.


Cơ sở dữ liệu nằm trên một máy chủ phần cứng riêng biệt, vì vậy địa chỉ IP của máy chủ MySQL được sử dụng.
Jongosi

1

Trải qua lỗi tương tự khi di chuyển một cơ sở dữ liệu lớn giữa 2 máy chủ.

Tạm thời thêm các tệp sau vào tệp cấu hình mysql (/etc/mysql/my.cnf) trên máy chủ (đích) cục bộ của tôi và khởi động lại mysql (khởi động lại dịch vụ mysql) đã khắc phục sự cố cho tôi:

max_allowed_packet      = 160M
wait_timeout            = 28800000
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.