Soap Server - 性能问题(可能与SQLite相关)

时间:2012-04-27 08:58:39

标签: php performance sqlite zend-framework soap

昨天我发布了有关SQLite性能问题的问题(Terrible performance in Zend Db PDO_sqlite insert and update queries)。经过多次测试似乎只有在通过SoapServer调用方法时才会出现问题(尝试使用本机PHP SoapServer和Zend_Soap_Server类)。

测试用例 - 调用10个使用SQLite DB INSERT和UPDATE DB操作的方法。

以下是一些如何运作的案例:

1.通过控制器 - 不使用Soap服务器。 localhost:~0.3s,远程服务器:~0.3s

2.通过Soap服务器。第一次通话。 localhost:~1-2s,远程服务器:~7s!

3.通过Soap服务器。几个电话。 localhost:~1-10s,远程服务器:~7s

第3个案例并不关心我,可能是本地服务器性能问题。重要的是它在远程服务器上运行稳定。

另一方面,简单的10个方法调用的7秒可以增加很长。显然 - 这7秒的一部分是客户端 - 服务器通信,如案例1省略的那样,但我不认为它应该那么慢!

对于调试,我记录了所有内容,似乎发生的情况是在案例1中调用的相同SQLite方法,取0.00x-0.02s,此处最后为~0.15-0.45。

可能是什么问题?使用SOAP时它如此急剧减速是否正常? (这是我的第一个肥皂服务器项目。)

编辑:我发现的另一个重要日志事实:

信息-2012-04-26 13:08:07.782679 类:SoapController。方法:SoapController :: hadleWSDL。行:18。

资讯-2012-04-26 13:08:08.318641 *系统启动*

因此,在调用两种方法之间基本上是时间。使用少量数据进行客户端 - 服务器通信超过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格式返回。

提前感谢您提出的任何建议,我可以做些什么来加快速度,或者如何追踪减速的真正原因。

祝你好运!

1 个答案:

答案 0 :(得分:0)

您是否使用FQDN作为服务器的地址?在这种情况下,它实际上可能与DNS相关。您可能还想尝试在真实系统上而不是虚拟主机上的所有内容,因为您无法控制物理系统实际执行的操作。

其次,我建议安装xdebug并使用kcachegrindwincachegrind,这将为您提供更详细的系统视图。

第三,您可以使用PostgreSQL pg_stat_statements()来记录慢查询。