2009-07-21 4 views
0

私は過去に、トラフィックが多いWebサーバーで永続的な接続を使用するのは良くないと聞いています。これは本当ですか、それともApacheのプリフォークモードにのみ適用されますか? CGIモードにこの問題がありますか?永続的接続を使用するのは難点ですか?

これには、PHP、Apache、Postgresqlが含まれます。

答えて

2

Are PHP persistent connections evil ? - PHPのMySQLの文脈インチ

永続的な接続を使用する理由は、他のほとんどのデータベースよりもはるかに高速ですが、むしろ高価な接続の数を減らすことです。

持続的な接続を持つ第一の問題...

あなたは毎秒数千の接続を確立している場合は、通常、長い時間のために開いていることを保持しませんが、オペレーションシステムはありません。 TCP/IPプロトコルによれば、ポートは瞬時にリサイクルすることはできず、リサイクルできるようになる前に「FIN」ステージで待機する必要があります。

2番目の問題は...多すぎるMySQLサーバー接続を使用しています。

一部の人々は、単にあなたがMAX_CONNECTIONS変数を高め、MySQLの他の人と100人以上の同時接続がMySQLで1024の以上の接続を持つことができないの古いLinuxの問題で殴られた得ることができます気付いていません。

なぜ永続的な接続がmysqli拡張で無効になったのかを話しています。たとえ永続的な接続を誤用してパフォーマンスが低下したとしても、それは理由ではありませんでした。本当の理由は、あなたはそれではるかに多くの問題を引き起こす可能性があります。

MySQL 3.22/3.23の時にPHPに永続的な接続が追加され、MySQLが問題なく簡単にリサイクルできるようになりました。それ以降のバージョンではいくつかの問題が発生しました。コミットされていないトランザクションがある接続をリサイクルすると、問題が発生します。カスタム文字セットの設定で接続をリサイクルした場合、セッション変数ごとに変更される可能性があることはもちろんですが、問題が再発しています。

0

永続的な接続を使用する際の1つの問題は、実際にはうまく拡張できないということです。 5000人が接続されている場合は、5000個の接続が必要です。永続性の必要性を取り除くと、同じ接続数を持つ10000人の人にサービスを提供することができます。なぜなら、それらの接続を使用していないときにそれらの接続を共有できるからです。

関連する問題