我在我的zend应用程序中开发了2个soap webservices。在我的开发环境(Mac 8 GB ram i7处理器上的MAMP)上,性能非常好。当我将它部署在我的Ubuntu LAMP服务器(1 GB RAM 1处理器)上时,性能会下降很多。它慢了10倍。
我有一个java客户端(来自wsdl的eclipse自动生成客户端)问题是第一次调用总是比第二次调用慢4倍。这适用于我的MAMP和LAMP。
MAMP - 首先拨打400毫秒 - 第二次通话100毫秒
LAMP - 首先拨打2 000 ms - 第二次通话400毫秒
我只是复制了请求,因此对于第一次和第二次调用,请求是完全相同的。
如果我多次手动运行LAMP客户端,第一次呼叫将在900 ms左右完成。感觉好像Zend应用程序在第一次调用时必须“启动”某些东西。
有没有人知道如何解决这个问题?我尝试了什么:
提前致谢!
答案 0 :(得分:0)
当您使用Zend_Soap_AutoDiscovery生成wsdl时,通常会出现此性能问题。如果您的代码就是这种情况,则应考虑将生成的wsdl存储为单独的xml文件,并将其加载到Zend_Soap_Server构造函数中。
答案 1 :(得分:0)
这看起来像是操作码缓存的问题。没有操作码缓存,Zend真的很慢。并且在使用它时会获得提升。
我会寻找Zend Optimizer,eAccelerator或者simillar ......
这就是为什么它会在一些空闲时间(从IO缓存中擦除类/文件)后减速的原因。