更新
看来这个问题是由与使用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然后再返回,然后重新启动实例并进行其他测试而不改变结果
答案 0 :(得分:2)
一种可能性是你让他们受到限制 - 检查"请求调整"在你的CF管理员。默认设置为"同时进行Web服务请求的数量"你在循环并点击服务器吗?在生产中是否有更多的流量?
在服务器监视器中启用分析和监视,然后单击" statistics"。在最右边有一个小图表图标。点击它,你会在右上角看到一个图表和一个计数器图例。然后运行你的代码。 " Web服务是否正在运行"达到一个门槛并进入排队的网络服务" - 如果是这样,你需要增加这个门槛。
另外一条线索 - 在服务器监视器中不要运行"内存分析超过几秒钟 - 比如说30.如果你不这样做,你肯定会遇到性能问题。