4

ときどき、Drupal 6.20 システムから Mysql データベースへのデータベース接続数が 100 ~ 150 に達し、しばらくすると Web サイトがオフラインになります。Mysql に手動で接続しようとしたときのエラー メッセージは、「多くの接続エラーが原因でブロックされました。'mysqladmin flush-hosts' でブロックを解除してください」です。データベースは Amazon RDS でホストされているため、このコマンドを発行する権限はありませんが、データベースを再起動できます。再起動すると、ウェブサイトは再び正常に機能します。次回まで。

Drupal は、オフラインになる前に次の 2 種類の複数のエラーを報告します。

キー 'PRIMARY' クエリのエントリ '279890-0-all' が重複しています: 1, 0, 0) /var/www/quadplex/drupal-6.20/modules/node/node.module の 2267 行目。

ロック待機タイムアウトを超えました。トランザクション クエリを再起動してみてください。 /content.module の 1213 行目。

これら 2 つのクエリの nid は常に同じで、カスタム モジュールによって頻繁に自動的に更新される 2 つのノードを参照します。これらのエラーと異常に多くの Web リクエストとの相関関係を Apache ログで追跡できます。これにより、ウェブサイトが遅くなることは理解できます。しかし:

  1. これらのエラーはなぜ発生し、どのように解決できますか? 同じノードを同時に更新しようとする複数のWebリクエストに関係しているようです。しかし、確かに Drupal はテーブルなどをロックすることでこれに対処する必要がありますか? それとも何か特別な方法で対処する必要がありますか?

  2. Web 負荷が高いにもかかわらず、データベースが完全にロックされ、再起動が必要になるのはなぜですか? Web サイトがまだ Mysql にアクセスでき、負荷が軽減されたら再びページを提供できるようになれば、もっと良いのではないでしょうか? これには何か設定がありますか?

ありがとうございました!

4

1 に答える 1

3

次の 3 つの項目の 1 つまたはすべてを解決して確認することができます。

  1. ディスク容量が不足していますか?ssh からコマンド df -h を入力し、ディスク容量がまだあることを確認します。

  2. テーブルが破損していませんか? phpMyAdmin でテーブルを修復するか、こちらの CLI 手順に従ってください: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html

  3. /etc/my.cnf を使用して mysql のパフォーマンスを調整しましたか? その他のアイデアについては、http: //drupal.org/node/51263を参照してください。

于 2011-07-11T03:35:35.347 に答える