2012-04-27 22 views
3

昨日私はSQLiteのパフォーマンスに関する問題(Terrible performance in Zend Db PDO_sqlite insert and update queries)を投稿しました。いくつかのテストの後、問題がSoapServer(ネイティブPHP SoapServerとZend_Soap_Serverクラスの両方を試してみた)を通してメソッドが呼び出されたときにのみ発生するようです。ソープサーバーパフォーマンスの問題(SQLiteに関連する可能性があります)

SQLite DB INSERTとUPDATE DB操作を使用する10のメソッドを呼び出します。 - SOAPサーバーを使用せずに、コントローラ1.Through

:ここ

は、それがどのように動作するかのいくつかの例があります。 localhost:〜0.3s、リモートサーバー:〜0.3s

2. Soapサーバーを介して。 1回目の呼び出し。 localhost:〜1〜2s、リモートサーバー:〜7s!

3. Soapサーバー経由。いくつかの呼び出し。 localhost:〜1-10s、リモートサーバー:〜7s

3番目のケースはあまり気にならないでしょう。おそらくローカルサーバーのパフォーマンスの問題かもしれません。重要なことは、リモートサーバで安定して動作することです。

一方、単純な10回のメソッド呼び出しでは7秒が増加します。明らかに - この7秒の一部は、クライアントとサーバー間のコミュニケーションです。ケース1はそれを省略していますが、私はそれが遅いと思っていません!

デバッグのために私はすべてをロギングしているようですが、ケース1で呼び出された同じSQLiteメソッドは、0.005-0.52となります。ここでは〜0.15-0.45秒です。

何が問題なのですか? SOAPを使用した場合、それが劇的に減速するのは通常のことですか? (これは私の最初の石鹸サーバープロジェクトです)。

EDIT:私が見つけたもう一つの重要なログ事実:

情報-2012-04-26 13:08:07.782679クラス:SoapController。メソッド:SoapController :: hadleWSDL。ライン:18

情報 - 2012-04-26 13:08:08.318641* SYSTEMだからそれが呼び出されている2つの方法の間basicly時間だ

* UP START。少量のデータを使ってクライアントとサーバー間の通信を行うと、0.5秒以上が私にとっては大変なようです。ここでhandleWSDLアクションのコードは次のとおりです。アプリケーションは本当に簡単です

$options = array(
    'encoding' => 'UTF-8', 
    'cache_wsdl' => WSDL_CACHE_BOTH, 
    'uri' =>$this->_WSDL_URI 
); 
$soap = new Zend_Soap_Server(null, $options); 
$soap->setClass('SoapServerFunction'); 
$soap->setObject(new SoapServerFunction()); 
$soap->handle(); 

- SOAPメソッドは1つのパラメータを取り、1つのキャッシュされたオブジェクトが作成され、それに基づか、データが処理されており、データの一部がXML形式で返されます。

私はそれをより速くするか、遅くする本当の理由を追跡する方法を提案してくれてありがとうございます。

よろしくお願いいたします。

答えて

0

サーバーのアドレスにFQDNを使用していますか?その場合、実際にはDNSに関連している可能性があります。また、実際のシステムが実際に何をしているかについて多くの制御を持たないため、仮想ホストではなく、実際のシステム上のすべてを試してみることもできます。

第2に、xdebugをインストールし、kcachegrindまたはwincachegrindを使用することをお勧めします。これにより、システムの動作をより詳細に把握できます。

第3に、PostgreSQLのpg_stat_statements()を利用して低速クエリを記録することができます。

関連する問題