web-dev-qa-db-ja.com

Drupal 7のトラフィックが中程度の場合のmax_allowed_pa​​cketの適切な値はどれですか?

drupal 7サイトの場合、この変数の球場番号を知る必要があります。最近「drupal "PDOException:SQLSTATE [08S01]:Communication link failure:1153」エラーが発生しました。私はmysqlの初心者で、共有ホスティングを使用しています。おそらく管理者に依頼してください。

前もって感謝します。

12
Patrick Cheung

私はあなたが持つかもしれない最大のBLOBについての質問に対する興味深い答えを見ました。これは、ServerFaultで見たステートメントです: innodb_log_file_sizeとinnodb_log_buffer_sizeの組み合わせは、大きなものがある場合、最大のblobオブジェクトの10倍より大きくなければなりません

Nils-AndersNøttseter からのServerFaultポストに基づいて、テーブルをクエリして最大のBLOBを見つけ、その数に11以上を掛けて、その回答を_として使用する必要があります max_allowed_pa​​cket 以降。

おかしいのは、 問題を解決するためにmax_allowedパケットのサイズを変更することを提案した別の質問に対処したことです

警告

the Book によると

TheBookImage

以下は、MySQLパケットについてのページ99のパラグラフ1〜3の説明です。

MySQLネットワーク通信コードは、クエリが常に適度に短く、サーバーによって1つのチャンクで送信および処理できることを前提に記述されています。これは、MySQLではパケットと呼ばれます。用語。サーバーは、パケットを格納するための一時バッファにメモリを割り当て、完全に収まるように要求します。このアーキテクチャでは、サーバーがメモリ不足になるのを防ぐための予防策が必要です。このオプションにより、パケットのサイズに上限が設けられます。

このオプションに関連するコードはsql/net_serv.ccにあります。my_net_read()を確認し、次にmy_real_read()への呼び出しに従ってください)に注意してください。 net_realloc()へ。

この変数は、多くの文字列関数の結果の長さも制限します。詳細については、sql/field.ccおよびsql/intem_strfunc.cc)を参照してください。

MySQLパケットについてこれを知っていると、DBAはそれらが不愉快に大きい場合でも、1つのMySQLパケット内の複数のBLOBに対応するようにサイズを変更できます。

状況については、データベースで最大のBLOBを見つけ、その数に11を掛けて、 max_allowed_pa​​cket をその数に設定します。サーバーに設定できるはずですmysqlの再起動なし(個人的には、このフォーラムの範囲外である移行とレプリケーションに関する他の問題に対処するため、256Mに設定します。すべての着信接続のデータベースに対して256Mに設定するには、次を実行してください:

SET GLOBAL max_allowed_packet = 1024 * 1024 * 256;

その後、この設定を[mysqld]セクションの下のmy.cnfに追加します。

[mysqld]
max_allowed_packet = 256M
12
RolandoMySQLDBA

Drupalの データベースサーバー要件 ページから取得:

システム変数max_allowed_pa​​cketを少なくとも16Mに設定する必要がある場合があります。一部の安価なホスティングプランでは、この値を低く設定しています(MySQLのデフォルトは1Mのみです)。その場合、より良いホスティングプランを選択する必要があるかもしれません。 Drupal 5.の場合、1Mの値で十分です。

共有ホスティングのサイトでは問題ないはずです。

4
Phizes

max_allowed_packet を設定するのは少し難しいかもしれません。その値を計算する方法にまだ出会っていません。通常、{cache}テーブルの行を含むデータベーススナップショットを復元しようとすると、このエラーが発生します。

この問題が発生した場合は、4Mから8Mの間の値を選択します。止まるまで値を上げていきます。ただし、共有ホストがこの値を変更するかどうかはわかりません。

2
mpdonadio