为什么我的coldfusion soap webservices在生产中比开发慢10倍?

时间:2015-10-30 17:30:09

标签: web-services soap coldfusion axis2 coldfusion-10

  

更新

     

看来这个问题是由与使用Axis2和ColdFusion特别相关的错误造成的,我们已经能够了   通过两个不同的服务器在我们的生产环境中复制问题   在Axis1和Axis2之间切换。我原来的测试比较了   两个显然被Application.cfc中的覆盖所阻止   这迫使Axis2。

     

我们今天遇到了内存泄漏,这迫使我们加快了解决这个问题的速度。它类似于泄漏   这里讨论虽然我们不确定它是否完全相同   问题   (https://www.hass.de/content/coldfusion-10-webservice-leaking-memory-trusted-cache-leaks-memory)。

     

我们的主要Web服务位于Axis1中,我们只切换到Axis2   这个新的web服务集因为我们需要文档文字样式   对于SalesForce和Axis1,正在创建一个无效的wsdl(确实如此)   没有正确描述数组中的所有对象类型)。所以现在我们有了它   Axis1并使用手动操作的wsdl。不完全确定是否   将与SalesForce一起使用,但就一般修复而言,这是有效的。

我正在调查我们的生产环境中基于coldfusion的肥皂网服务的问题。似乎webservices方法代码中的return语句与实际接收响应之间的时间可能很长,并且似乎直接对应于响应的大小和/或对象的数量。

在开发中,返回1000条记录的特定请求大约需要6秒才能返回。但是在制作中,相同的命中需要50秒才能返回。我添加了一些时序代码,发现实际的功能代码在请求开始时运行不到1秒,这意味着生成响应在生产中需要冷却约50秒。使用简单的http请求访问Web服务并不具有相同的缓慢性,因此似乎是特定于soap / axis的。得到的xml约为1MB,我已经比较过,发现没有差异。我还在两个环境中复制了cfadmin中的设置以进行比较,并且找不到与性能相关的设置差异。

两种环境都处于相同的CF 10更新级别。服务器监视器显示没有显着的内存使用量我还从服务器运行请求,以确保没有一些缓慢的连接问题或https减慢速度,但结果是相同的。

任何建议或解决方案都将不胜感激。

附加说明......

  • 在请求的大部分时间内CPU占17%左右,这是很多工作要做。事情发生得非常低效

  • 我尝试将实例切换到Axis1然后再返回,然后重新启动实例并进行其他测试而不改变结果

1 个答案:

答案 0 :(得分:2)

一种可能性是你让他们受到限制 - 检查"请求调整"在你的CF管理员。默认设置为"同时进行Web服务请求的数量"你在循环并点击服务器吗?在生产中是否有更多的流量?

在服务器监视器中启用分析和监视,然后单击" statistics"。在最右边有一个小图表图标。点击它,你会在右上角看到一个图表和一个计数器图例。然后运行你的代码。 " Web服务是否正在运行"达到一个门槛并进入排队的网络服务" - 如果是这样,你需要增加这个门槛。

enter image description here

另外一条线索 - 在服务器监视器中不要运行"内存分析超过几秒钟 - 比如说30.如果你不这样做,你肯定会遇到性能问题。