Производительность Zend Soap Service на ЛАМПЕ - PullRequest
0 голосов
/ 07 августа 2011

Я разработал 2 мыльных веб-сервиса в своем приложении Zend. В моей среде разработки (MAMP на Mac 8 ГБ ОЗУ i7) производительность действительно хорошая. При развертывании его на моем сервере Ubuntu LAMP (1 ГБ ОЗУ на 1 процессор) производительность сильно снижается. Это более чем в 10 раз медленнее.

У меня есть Java-клиент (eclipse автоматически сгенерированный клиент из wsdl). Проблема в том, что первый вызов всегда в 4 раза медленнее, чем второй. Это относится как к моей MAMP, так и к LAMP.

MAMP - Первый звонок 400 мс - Второй звонок 100 мс

ЛАМПЫ - Первый звонок 2 000 мс - Второй звонок 400 мс

Я просто дублирую запрос, чтобы запрос был одинаковым для первого и второго вызова.

Если я запускаю клиент LAMP вручную несколько раз, первый вызов будет выполнен примерно через 900 мс. Такое ощущение, что приложение Zend должно что-то «запустить» во время первого вызова.

Кто-нибудь знает, как мне это обойти? Что я пробовал:

  • Убедитесь, что wsdl кэшируется
  • Установленный xcache (не поставляется с LAMP)
  • Чтение настроек учебников

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Это похоже на проблему с кешем кода операции.Без кеша кода операций Zend работает очень медленно.И он получает новый импульс при использовании.

Я бы искал Zend Optimizer, eAccelerator или simillar ...

Именно поэтому он замедляется после некоторого времени простоя (классы / файлы стираются из кэша ввода-вывода).

0 голосов
/ 07 августа 2011

Эта проблема с производительностью часто возникает, когда вы используете Zend_Soap_AutoDiscovery для генерации wsdl. Если это так для вашего кода, вам следует рассмотреть возможность сохранения сгенерированного wsdl в виде отдельного XML-файла и загрузить его в конструктор Zend_Soap_Server.

...