2

PHPベースのWebアプリケーションの負荷テストでは、DBのハード制限である最大接続数150に簡単に到達できます。DB接続を管理するためにORMでKohanaを実行します。

これにより、接続例外が発生し(したがって、トランザクションが失敗します)、mysql_pconnectのパフォーマンスはさらに低下するようです。

負荷がかかった状態で適切に劣化するソリューションを探しています。考慮されるオプション:

  1. DB接続プール(ええと、PHPでは不可能ですよね?)
  2. 最大接続数に達したことが原因で失敗した場合は、失敗した接続を再試行してください

2は論理的に見えますが、Kohana/ORMがDB接続プロセスを管理します。これをなんとかして設定できますか?

思いもよらないことはありますか?


編集

これはAmazonAWSRDSデータベースインスタンスであり、Amazonは私に150の制限を設定し、サーバーは最も確実に正しく構成されています。使用しているデータベースを使用して、負荷がかかった状態で適切に機能を低下させたいだけです。明らかに、いつでもDBをアップグレードして接続制限を高くすることができますが、予期せず制限に達した場合に備えて、障害が発生した場合に備えたいと考えています。負荷がかかった状態での優雅な劣化。

4

2 に答える 2

2

負荷テストと言うときは、約 150 の同時リクエストをプッシュしていると想定しており、同じリクエスト内で複数の接続を行うために接続制限に達しているとは考えていません。もしそうなら、 mysql_pconnectをチェックしてください。Kohana で有効にするには、接続の config/database ファイルで persistent = true を有効にするだけです。

それがうまくいかない場合は、PHP がスレッド間でリソースを共有しないため、より多くの接続を許可する Amazon 製品を見つける必要があります。

これは、PHP データベース接続プーリングに関する質問への回答です。

于 2012-04-06T04:42:11.607 に答える
0

接続の制限が 150 の場合 ( max_connectionsのデフォルトは 151)、設定ファイルなしで mysql を実行している可能性が高い

その数を上げるには、構成ファイルを作成する必要があります

/etc/my.cnf を作成し、次の 2 行を挿入します。

[mysqld]
max_connections=300

mysql を再起動する必要はありません (必要に応じて再起動できます)

このMySQLコマンドを実行して動的に上げることができます

SET GLOBAL max_connections = 300;

更新 2012-04-06 12:39 EDT

mysql_connect の代わりにmysql_pconnectを使用してみてください。mysql_pconnect を使用するように Kohana を構成できる場合は、問題ありません。

于 2012-04-06T04:31:48.880 に答える