Magento MySQLにエラーがなくなりました


14

Magento CE 1.7.0.2には奇妙な問題がたくさんあります。通常の操作中、サイトはフロントエンドとバックエンドの両方でMagentoエラーページ(リクエストの処理中にエラーが発生しました)を時々生成します。関連レポートを表示すると、次のメッセージが表示されます。

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

時々ですが、まれですが、レポートメッセージは次のようになります。

 Connection reset by peer

私が見てきましたVAR>ログ> SYSTEM.LOGMySQL has gone awayエラーは以下を伴います:

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

これに加えて、次のエラーはすべてのリクエストとエラーで発生しているようですMySQL has gone away

 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

私はこれについて見つけることができるほとんどの記事を見て、牛が帰宅するまでデータベースのパラメーターをいじくりましたが、エラーは残っています。

コンパイラに関する別のQnAをフォローした後、管理ページの[ システム]> [ツール]> [コンパイル]が完全に空白であることに気付きました。これらはすべて関連するエラーだと思いますが、デバッグや原因に関する洞察は非常に役立ちます。

これに一貫性がない場合は申し訳ありません。私は約42時間目を覚ましているので、説明を求めてください。ありがとうございました。

-更新-

明確にするために私のサーバースタック:

PHP 5.5.4 (PHP-FPM)
Nginx 1.4.2
MySQL 5.5.33

-更新-

PHPコードベースとMySQL dbが別々のハードウェアサーバー上にある-私が(しばらく眠った後)私が指定したことはありません-yaが私を助けるかどうかを知ることは非常に重要です!! 謝罪します。


1
永続的なデータベース接続を使用していますか?その場合、それらを無効にしてみてください。また、mysqlログをチェックして、エラーがあるかどうか、または実際に再起動しているのか、単に接続が切断されているのかを確認します。
-davidalger

Thx David、MySQLログとDBをテーリングすると、エラーが発生してもヒットしません。私は永続的な接続を使用していましたが、無効にすることは助けにはなりませんでした:(
Jongosi

1
接続が悪いと考えましたか。このエラーの原因は、DBがメッセージを取得しなかったことです。local.xmlの接続情報を使用してmysqli関数を呼び出して、デバッグを試みてください。何が起こるか見てください。
SH-

ありがとう、ローカルファイルの編集に関する私の問題を修正したようです

回答:


9

これは主に以下の2つの理由のいずれかによるものです

  1. サーバーがタイムアウトし、接続を閉じました。
    修正:wait_timeoutmysqldのmy.cnf/my.ini 設定ファイルの変数を増やしてみてください。
  2. サーバーが誤ったパケットまたは大きすぎるパケットをドロップしました。
    修正:max_allowed_packetin my.cnf/my.ini fileの値を増やすことにより、最大パケットサイズ制限を増やします。

時間がかかりすぎたり、適用できないものを取得しようとしている場合は、ファイルをチェックインしてください。


Thx Anshu、MySQLクエリログを追跡していますが、データベースがリクエストでヒットすることはありません。また、サーバーを再起動すると、サーバーがオンラインになってから20秒以内にエラーが発生することがあります。デフォルト設定でもタイムアウトするには短すぎます。max_allowed_packet2Gとwait_timout86400 に設定しましたが、まだ助けはありません。
チョンゴシ

データベース接続が適切であれば、あなたのアプリケーションの/ etc / local.xmlファイルチェックし確認してください
Anshuミシュラ

Thx Anshu、はい、それは正しいです-接続はリクエストの約68%で発生します
-Jongosi

6

問題は解決された!助けてくれてありがとう。これは、Webホストがハードウェアファイアウォールの問題であり、それらが無効化された後でも同様です。

1&1のサーバーチームが確認したように、ハードウェアファイアウォールは正しく構成されいましたが、約25%の時間でファイルサーバーとdbサーバー間の有効なトラフィックを誤って傍受していました。

代わりにiptablesを構成し、ハードウェアファイアウォールを完全にシャットダウンしました。100%の可用性。


2
ああ!散発的なファイアウォール…この種の問題を愛さなければなりません。ソートしてくれてうれしいです。:)
デビダルガー

ここでも同じ問題があり、あなたのソリューションも私たちにとってうまくいくようです。1&1も話します。サポートは何らかの形であなたを助けましたか?連絡できますか?ツイッター?フェイスブック?詳細については私のプロフィールをご覧ください。ありがとう
-webDEVILopers

2

Magento 2.1でも同じ問題が発生し、mysqlエラーログで「MySQL has gone away」プロセス中に次のエラーが複数回表示されました。

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

この問題を潜在的に解決するには、最初にでopen files値を確認します$ ulimit -n(私の場合は)256

次に、table_open_cache = {that ulimit -n value}[mysqld]セクションの下に追加しますmy.cnf

ここでMySQLを再起動し、うまくいけばアクションに戻ります。

注:私は、Magento 2.1をローカルでOS X El Capitanで実行し、PHP 7.1およびMySQL 5.7.15でHomebrewを使用しています。しかし、私はこのソリューションが古いセットアップや異なるセットアップでも機能すると確信しています。


1

Magentoフォルダーのapp / etc / local.xmlファイルを編集し、ホストのエントリを「localhost」ではなく「127.0.0.1」に置き換えます。


データベースは別のハードウェアサーバー上にあるため、MySQLサーバーのIPアドレスが使用されます。
チョンゴシ

1

2つのサーバー間で大規模なデータベースを移行するときに同じエラーが発生しました。

ローカル(宛先)サーバーのmysql構成ファイル(/etc/mysql/my.cnf)に一時的に以下を追加し、mysqlを再起動(サービスmysqlを再起動)して問題を修正しました。

max_allowed_packet      = 160M
wait_timeout            = 28800000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.