2011-08-20 10 views
10

私はdoctrine 2 PDOをmysqlで使用します。Doctrine 2 Close Connection

ストレスは、サーバーをテストし、MySQLは中止されまし接続(アップ20%)の多くを報告します。

問題を特定しようとしています。

データベースへの接続が正しく閉じられていることを確認するためのマニュアルです。 http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html

doctrineが実際に接続を閉じているかどうか、または永続的な接続を使用している場合、私は情報を見つけることができません。

また、中断された接続を考慮に入れることができるものはありますか?私はここで紛失している。

PS。サーバーは、私が観察したものからのUbuntu 10.04、nginxの1.xでは、PHP 5.3.5(FPM)とMySQL 5.1.41

+0

Doctrine2マニュアルでは、APCまたはその他のキャッシュメカニズムを使用することをお勧めします。 1つを提供できないと、多くの接続が発生する可能性があります。あなたがいずれかを持っている? – J0HN

+1

接続のためのキャッシュ? – iBiryukov

+0

メタデータとクエリにAPCキャッシュがあります。接続をキャッシュする方法を説明しているマニュアルへのリンクがありますか? – iBiryukov

答えて

21

で、Doctrineは持続的な接続を使用しています。

私たちは、データベースは、「スリープ」状態の接続でスパムたSymfony2のでユニットテストを起動し、問題につまずいてきました。私たちのために働いたソリューション:

$entityManager->getConnection()->close(); 
+1

近くに電話をしたときに教えてもらえますか? kernel.terminateやkernel.responseイベントでこれを実行しようとしていますが、接続はまだmysqlに掛かっています。 – Vail

+1

ユニットテストで使用していたので、tearDownメソッドにありました。申し訳ありませんが、私はあなたを助けることはできません。 – wdev

+0

私はまだ開いている接続のリストが増えるのを見ています。:/ – sensorario

1

私は同じ問題を抱えていると

$entityManager->getConnection()->close(); 

が動作しているようですが、あなたは

gc_collect_cycles() 

を追加する場合、いくつかのPHPのバージョンでは「より良いの作品接続を閉じた後 私は古いPHPのバージョンでこの種の問題を抱えていますが、私が推測するガベージコレクタに関連するものかもしれません。 は、私はすべてのPHPのバージョン

+0

私の場合、gc_collect_cycles()はPHPUnitテストの実行中に私の '接続が多すぎます'というエラーを解決しました – Davincho

関連する問題