よく調べた結果、最終的に解決策を見つけました。
私はあまり作家ではないので、できるだけ簡潔にするために最善を尽くします。
だから私が見つけることができる限り、2つの可能な解決策があります:
SQLリレー
http://sqlrelay.sourceforge.net/
これは、質問が求めていたものを正確に実行し、さらに多くを行います。私はこれについて何を見つけることができたかについてあまり詳しくは述べませんが、それは透明ではないので実行可能な解決策ではなかったことに言及します。フローが次のとおりであることを意味します。
PHP -> Queries -> SQL Relay Extension -> SQL Relay -> Externally hosted MySQL
そのため、これにはすべてのコードをmysqlからsql relayに書き換える必要がありました。私たちの場合はオプションではありません。
そうは言っても、誰かがSQLリレーが持つ多数の機能のいずれかを必要とする新鮮な大規模プロジェクトを計画している場合、それは美しいように聞こえます。
Mysqlプロキシ
http://forge.mysql.com/wiki/MySQL_Proxy
これが最終的に使用したソリューションです。
これを実行するためのキーは、mysqlプロキシ用のLUAスクリプトをプールすることです。
このLUA拡張機能は、次の場所にあります。
https://github.com/cwarden/mysql-proxy/blob/315ab806bb95b8223f5afd3d238eff2a40af03d8/lib/ro-pooling.lua
あまり詳細に説明することなく、ここにいくつかの基本的な統計があります...念頭に置いて、これは低使用時間でテストされます:
[root@HOSTNAME etc]# netstat -na | grep ":3306 " | grep TIME_WAIT | wc
6433 38598 572537
mysql-proxyに切り替えて、物事を落ち着かせた後:
[root@HOSTNAME etc]# netstat -na | grep ":3306 " | grep TIME_WAIT | wc
32 192 2848
明らかなように、mysqlへのTIME_WAITポートはほとんどありません。
現在、接続はmysql_pconnect / mysqli_connect(... p:hostname ...)を使用せずに永続的になっています。
言及する価値があるのは、pooler luaスクリプトの上部近くにいくつかの構成可能な設定があるようです。
ローカルmin_idle_connections
そして
ローカルmax_idle_connections
これらは自明のようです。それを除いて:各ユーザー名(およびパスワード?テストされていない...おそらくそうではない)の組み合わせは、永続的な接続の独自のセットを作成します。
したがって、max_idle_connectionsに、データベースに接続する一意のmysqlユーザーの数を掛けます。そして、これにより、アイドル状態の接続がいくつになるかがわかります。
繰り返しになりますが、この小さな宣伝文句は、Google経由で検索しているユーザーの一部のキーワードに当てはまります。
PHPを使用する場合、mysql_pconnectなしで永続的なmysql接続を確立できますか?
はい。これは、拡張機能を介してクエリをパイプするためにコードの大部分を再構築する必要がない場合、またはmysql-proxyをro-pooling.luaスクリプトとともに透過的に使用する場合、SQLリレー経由で実行できます。
私たちは約1年間、このようなものを望んでいます。
楽しい!
mysql_pconnect
「クリーンアップ関数」を使用して各接続を単純に使用および開始しないのはなぜですか?