web-dev-qa-db-ja.com

Mysql:Aborted connection ... / ...(通信パケットの読み取りエラーが発生しました)

このエラーメッセージは、このフォーラムで何度も送信されました。

私は成功せずに以下を試しました。

コンテキスト

これはSymfony1/Doctrine1 Webアプリケーションです。このエラーは私のコンピューターとサーバー(両方ともUbuntu)に表示されます。ブラウザレベル(Chrome)でエラーが発生しました:

POST http://*****/administration_dev.php/utilisateur net::ERR_EMPTY_RESPONSE

enter image description here

これが私のコンピュータの詳細です:

$ uname -a
Linux Bureau 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
$ dpkg -l |grep php
ii  libapache2-mod-php                          1:7.0+35ubuntu6                                             all          server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii  libapache2-mod-php7.0                       7.0.4-7ubuntu2.1                                            AMD64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php                                         1:7.0+35ubuntu6                                             all          server-side, HTML-embedded scripting language (default)
.../...
$ dpkg -l |grep mysql-
ii  mysql-client-5.7                            5.7.13-0ubuntu0.16.04.2                                     AMD64        MySQL database client binaries
ii  mysql-client-core-5.7                       5.7.13-0ubuntu0.16.04.2                                     AMD64        MySQL database core client binaries
ii  mysql-common                                5.7.13-0ubuntu0.16.04.2                                     all          MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                                5.7.13-0ubuntu0.16.04.2                                     all          MySQL database server (metapackage depending on the latest version)
ii  mysql-server-5.7                            5.7.13-0ubuntu0.16.04.2                                     AMD64        MySQL database server binaries and system database setup
ii  mysql-server-core-5.7                       5.7.13-0ubuntu0.16.04.2                                     AMD64        MySQL database server binaries

保存プロセス中に新しいユーザーを作成しようとすると、エラーが表示されます。

提案された提案

#1 MySQLエラー読み取り通信パケット

$ mysql -uroot -p -e "SET GLOBAL max_allowed_packet = 1024 * 1024 * 1024;"
Enter password: 
$ mysql -uroot -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
Enter password: 
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
$ tail -f -n0 /var/log/mysql/error.log
2016-07-24T19:41:32.736817Z 23 [Note] Aborted connection 23 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:32.906433Z 24 [Note] Aborted connection 24 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:33.056226Z 25 [Note] Aborted connection 25 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:33.212496Z 26 [Note] Aborted connection 26 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:33.363754Z 27 [Note] Aborted connection 27 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:33.516194Z 28 [Note] Aborted connection 28 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:41:33.668201Z 29 [Note] Aborted connection 29 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)

#2 MySQL:通信パケットの読み取りエラー

$ cat /etc/mysql/conf.d/david.cnf 
[mysqld]
sql-mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet = 256M
innodb_log_buffer_size = 32M
innodb_log_file_size = 2047M
$ mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0;"
$ Sudo service mysql stop
$ Sudo mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
$ Sudo mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
$ Sudo service mysql start
$ tail -f -n0 /var/log/mysql/error.log
2016-07-24T19:56:02.342912Z 7 [Note] Aborted connection 7 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:02.494024Z 8 [Note] Aborted connection 8 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:02.642960Z 9 [Note] Aborted connection 9 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:02.787908Z 10 [Note] Aborted connection 10 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:02.933718Z 11 [Note] Aborted connection 11 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:03.084066Z 12 [Note] Aborted connection 12 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)
2016-07-24T19:56:03.235319Z 13 [Note] Aborted connection 13 to db: 'pfs2' user: 'pfs2' Host: 'localhost' (Got an error reading communication packets)

アイデアや提案が不足しているので、ここで助けを求めています。

よろしくお願いします。必要に応じて詳細をお知らせします。

デビッド。

3
David

解決策はコードにありました。 PHP例外は処理されず、開いているSQLトランザクションを閉じる前にアプリケーションがクラッシュします。

Mysqlエラーメッセージの原因は、この不確定な状態にある可能性があります。これ以上は言えません。

Rolando、ありがとうございます。

0
David

PHPを1つのサーバーで使用してMySQL 5.7を実行しています。これは、サーバーがMySQL専用ではないことを示しています。PHPとMySQLは明らかにRAMで競合しています。

また、InnoDBバッファープールサイズを設定しようとする試みも見られません。 innodb_buffer_pool_size のデフォルト値は128M(134217728)です。

max_allowed_pa​​cket について覚えておいてください。変数名が示すように、 これはMySQLパケットに許可されている最大サイズです 。 MySQLドキュメントによると、MySQLパケットは1Gとして開始されません。その初期サイズは net_buffer_length の値に基づいています。 MySQLパケットは、必要に応じて動的に max_allowed_pa​​cket に拡張されます。

MySQLパケットを調整する試みは、RAMの不足により無効になります。

提案#1

  • 専用のWebサーバーにすることができる別のサーバーにPHPをインストールします。
  • DBサーバーでRAMの量を増やします

提案#2

別のサーバーに余裕がない場合は、RAMとバッファープールサイズを増やしてください。

提案#3(オプション)

MySQL 5.7を使用しているため、バッファプールを動的に拡張できます。

次の手順で2GBに設定します。

mysql> SET GLOBAL innodb_buffer_pool_size = 1024 * 1024 * 1024 * 2;
0
RolandoMySQLDBA