2011-08-07 10 views
0

私はzendアプリケーションで2つのsoap webservicesを開発しました。私の開発環境(Mac 8GB RAM i7プロセッサのMAMP)では、パフォーマンスは本当に良いです。 Ubuntu LAMPサーバー(1 GB RAM 1プロセッサー)に展開すると、パフォーマンスが大幅に低下します。その10倍以上の遅さ。パフォーマンスZend Soap Service on LAMP

私はJavaクライアントを持っています(eclipseはwsdlから自動生成されたクライアントです)。問題は、最初の呼び出しが常に2番目の呼び出しより4倍遅いことです。これは私のMAMPとLAMPの両方に適用されます。

MAMP - 最初の呼び出し400ミリ - 第コール100ミリ

LAMP - 最初の呼び出し2つの000 MS - 第コール400ミリ

exactley要求であるので、私は単に要求を複製1回目と2回目と同じです。

LAMPクライアントを手動で数回実行すると、最初の呼び出しは約900ミリ秒で実行されます。あたかもZendアプリケーションが最初の呼び出し中に何か "起動"しなければならないかのように感じます。

誰も私がこれをどう回避できるかについての手掛かりはありますか?私が試したもの:

  • 読むのチューニングは、事前に

感謝をtutroials WSDLがキャッシュされている(LAMPに同梱されていない)

  • インストールXCacheとを確認してください!

  • 答えて

    0

    このパフォーマンスの問題は、wsdl生成にZend_Soap_AutoDiscoveryを使用するとよく発生します。それがあなたのコードの場合は、生成されたwsdlを別々のXMLファイルとして保存し、Zend_Soap_Serverコンストラクタにロードすることを検討する必要があります。

    +0

    私のパブリックフォルダにwsdlを格納し、./wsdl/my.wsdlとwsdl/my.wsdlを使用してコンストラクタのボットにロードしようとしました。この問題は、サービスが数秒間アクセスされていない場合に発生するようです。数回連続して実行するとsoap-ui(wsdlをキャッシュ)で150ms、wsdlをメモリにキャッシュするJavaクライアントで約900msで呼び出しが行なわれます。しかし、サービスが数分/秒でアクセスされていない場合、Javaクライアントは2〜5秒かかり、soap-uiは1〜2秒かかります。他のアイデア? – Jake142

    +0

    xdebugとkcachegrindを使用してサーバーコードをプロファイルして、ボトルネックが正確にどこにあるか確認してください。 –

    0

    これはopcodeキャッシュの問題です。オペコードキャッシュがなければ、Zendは本当に遅いです。それを使用すると、それはncieの向上を得る。

    それはいくつかのアイドル時間(クラス/ファイルはIOキャッシュから拭いている)の後に遅く、なぜだろう、私はZendのオプティマイザ、eAcceleratorの、またはsimillarを探したい

    ...

    +0

    ありがとう、xCacheを使用しています。私のアプリを稼働させ続ける(アイドル状態にならない)ためのチューニング方法に関するヒントを教えてください。 – Jake142

    +0

    申し訳ありませんが、XCacheの実際の経験はありません。解決策はすべてのキャッシュの寿命を延ばすことですが、どうすれば...私は分かりません。それは単なるポインタです;) –

    +0

    fastcgiはオプションになりますか? IveがLAMPインストールを完了し、mod_cgiがロードされているのを見ると、どうすればfastcgiになるのですか? – Jake142

    関連する問題