3

这是一个极端的远景,但偶尔会有一位工程师在这里知道引擎盖下发生了什么。

首先,我知道您几乎总是可以重写一些代码来避免 QoQ 以获得更好的性能。但是,我正在尝试调试的是使用 QoQ 的代码在某些条件下性能如此糟糕的潜在原因,从而为未来的项目制定指导方针。

1) ColdFusion QoQ Java 实现是否会导致对 QoQ 系统的访问是单线程的?(我在Railo上看到过关于这个的帖子

2) 根据 FusionReactor 的说法,堆栈跟踪的请求始终处于 QoQ 的评估(90% 机会)或执行阶段(10% 机会)——绝不是围绕它的逻辑的任何其他部分。那就是它在带有查询参数的循环中运行。

我们有几个不同的功能,可以在数万次迭代的循环中使用 QoQ 来生成报告,无论这是否是最佳实践。唯一减慢的进程是使用 QoQ 的进程。除非在服务器重新启动后几乎立即启动它们,否则它们的完成时间会增加 10 倍。FusionReactor 在评估 QoQ 或处理 QoQ 时始终具有线程状态。值得注意的是:堆和 CPU 在整个持续时间内都保持稳定在 20% 以下。所有内存空间看起来都不错——代码缓存、perm 等。

知道在循环中运行 QoQ 不是完成它的方法,应该进行更改,但我只是在寻找答案。密码被锁了吗?这是一个可用的线程问题吗?有什么关于评估陈述的吗?为什么重启后会很好,但会在几个小时内迅速降级?这就是让我烦恼的地方——我会永远接受它,这是让我处于堆栈溢出状态的奇怪模式。

ColdFusion 10 如果有帮助的话。

4

0 回答 0