2010-04-17 71 views
1

我们已经开始了一个新的CF8应用程序,它运行速度慢。我们在ColdFusion(数据库实用程序中的查询)中进行的测试显示正常速度(80毫秒)。 CF8以60到80秒的时间返回相同的查询!ColdFusion 8慢性能

我一直在网上查看,看到很多关于CF8和性能问题的文章,但没有得到任何解决方案的总体感觉;很多人在尝试并说他们没有CF7的问题。我们也在服务器上看到不稳定,以及一些与垃圾收集和内存堆有关的错误。

我们有一些关于CF8运行的其他应用程序和他们进行充分的......我们的程序员是不是专家或大师,他只是塞了。我们已经将这个问题分解为一个需要永久返回的查询,因此这不是一个复杂的测试。

是否有任何已知的CF8问题或我们应该考虑尝试的明显调整?如果我们必须重新开始学习新的环境,我将永远不会限期。

JoeBob

+0

所以,用数据库客户端运行一个查询需要80毫秒,但通过ColdFusion的CFQUERY完全相同的查询需要60-80秒? 在同一个应用程序中的其他查询需要正常的时间吗? Coldfusion 8有一个很不错的服务器监视器 - 你有没有调查过这个?如果打开所有3个监视选项,则可以精确地看到代码挂起的位置,并且您还可以看到正在运行的数据库查询。 数据库服务器是否也报告此查询需要60-80秒?或者,对于数据库服务器,查询运行很快? – 2010-04-17 19:15:30

+0

我的经验和我在CF show 8上的大部分博客都比7大改进。你是否应用了所有补丁和修补程序? – kevink 2010-04-17 19:37:50

+2

为什么不共享查询? – Yisroel 2010-04-18 03:12:32

回答

2

好吧,这里是我会怎么做:

  1. 我把查询限制1或TOP 1(DB你)会看到那么会发生什么。

  2. 试着运行查询,其中只有60秒作为页面上的东西。不输出任何内容,只需运行查询。

  3. 如果您发现内存和GC出现问题,请关闭调试,取消选中管理员中的所有调试选项。

  4. 确保CF8附带的监视器工具关闭了所有选项。

如果这没有帮助,我们可以走得更远。

编辑:可能是一个问题的第一件事是返回记录的数量。其次是你做了大量的数据处理,如果打开调试,记录页面执行期间发生的所有事情都会被记录下来。我看到服务器在调试时填充了几乎10GB的RAM,而没有它的同一个进程花费了40MB。第三种选择是服务器或设置真的有问题。

+0

我们已经尝试过100强,查询仍然需要相同的时间或更长的时间才能返回。它现在是页面上唯一的东西,我们不输出,只是按照您的建议运行查询。查询返回的记录越多,记录时间越长。如果它只返回几条记录,则需要几秒钟才能返回,但仍然太慢。但是,如果它返回数千条记录,则需要一分钟左右的时间。但是,再次,我们不在测试中输出任何东西,我们只是在做选择。我将检查调试选项 – JoeBob 2010-04-18 12:28:23

0

根据你最后的解释,问题似乎与你的查询,而不是CF.你正在运行哪个数据库?你有桌子上的索引吗?

+1

除了什么数据库,您使用什么协议和驱动程序连接到它? ODBC还是JDBC?我最近遇到了一个SQL Server 2005的问题,它使用一个SSL JDBC驱动程序永久运行一个使用cfsqltype =“CF_SQL_VARCHAR”的CFQUERYPARAM的查询。使用存储过程而不是查询解决了滞后问题。 – 2010-04-19 19:38:02

0

您是否需要所有正在返回的列?你在用SELECT *吗?你应该只返回你需要的列。即使您不输出数据,仍然有很多数据从数据库传递到Web服务器。

0

感谢大家的帮助......我想,作为建议,这个问题是不是CF问题都没有......我们仍在运行测试时间相同的查询PHP中类似的条件,但所有我的经验是使用非网络应用程序,而我只是没有意识到“选择”确实意味着“选择并将所有数据传输到网络服务器”,即使没有任何输出到屏幕上。转移到20,000多条记录(包括许多不需要的字段)需要花费大量时间。我之前被告知,在这段延迟期间数据库服务器并未处于活动状态,结果证明这是错误的信息。我不得不绕过程序员,并得到管理员,并看看性能监视器,看到这显然是错误的;传输数据需要时间和带宽。

JoeBob