问题标签 [fusionreactor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 是什么导致 Colfusion 中神秘的挂起线程 -> mysql 通信
Coldfusion 中更有趣的“功能”之一是它如何处理外部请求。它的基本要点是,当通过<cfquery>
或任何其他外部请求对外部源进行查询时,它会将外部请求传递给特定的驱动程序,此时 CF 本身无法暂停它。即使在查询或 cfsetting 中指定了超时,它也会被所有外部请求完全忽略。
http://www.coldfusionmuse.com/index.cfm/2009/6/9/killing.threads
因此,考虑到这一点,我们遇到的问题是我们的 CF 服务器和我们的 mySQL 服务器之间的通信有时会出错并留下挂起的线程。它们具有以下特点。
- 挂起的线程出现在 CF 中,无法从 FusionReactor 中杀死。
- 在 mySQL中没有可见的挂起线程,也没有活动的运行查询(只是通常的睡眠)。
- 数据库正在响应其他调用,并且似乎运行正常。
- 数据库和用户都没有达到最大连接数。
在我看来,唯一可能的候选者是 CF 以某种方式发出请求,mySQL 正在响应该请求,但是 CF 忽略了一个答案,并继续保持线程打开等待来自 mySQL 的响应。这可以解释为什么数据库似乎没有任何问题的迹象,但 CF 保持一个线程打开等待神秘的答案。
通常这些挂起的线程会随机出现在其他工作脚本上(例如在新闻文章上发表评论)。即使该脚本挂起一个线程,该脚本的其他请求也会通过,这意味着脚本不一定有错误,而是脚本执行时面临的条件。
我们进行了一些测试以确定这不是 mysql 生成的 max_connections 错误......我们创建了一个用户,给它 1 个最大连接数,将该连接与 sleep(1000) 查询绑定并执行另一个查询。不幸的是,它在没有生成挂起线程的情况下正确地出错了。
所以,我现在完全不知道出了什么问题。是否有其他连接限制或超时可能导致服务器之间的通信出错?
memory-management - 是否可以在 ColdFusion 中确定应用程序范围变量的大小(内存占用)?
我们使用 FusionReactor,它将显示服务器级别的整体内存使用情况,但能够查看存储在应用程序范围中的单个项目占用了多少内存将很有用。
tomcat - 404 处理程序挂在 ColdFusion 10 上,在 ColdFusion 8 上完美运行
我的 ColdFusion 10 服务器上的 404 处理程序页面出现了一个奇怪的间歇性问题。这是背景故事:
多年来,我们一直在运行 2 台负载平衡的 ColdFusion 8 服务器,没有出现任何问题。
我们已将这两台服务器中的一台升级到 ColdFusion 10,以便软启动我们的 ColdFusion 10 升级。
我已经在 CF10 服务器上安装了 Update 8,并删除并重新添加了连接器。
两台服务器都运行 Windows 2008 R2。
我已经阅读了几篇论坛帖子,说明人们在 404 页面上遇到连接重置问题,但我没有看到那个特定问题。我看到的是 FusionReactor 中 404.cfm 文件的挂起线程。以下是从这些挂起线程之一获取的堆栈跟踪示例:
我试过通过 FusionReactor 手动杀死这些线程,但它们不会死。清除挂起线程的唯一方法是重新启动 ColdFusion 服务(自从我升级到 ColdFusion 10 以来,我每天至少必须这样做一次。
除了运行我们的标准布局自定义标签并显示未找到页面通知外,404 并没有做任何特别的事情。
查看线程转储,ColdFusion 似乎已经完成了处理并完成了用输出填充缓冲区,但它还没有完成发送到浏览器?
那里有很多关于关闭和完成的东西,但它后面的步骤有更多的阅读和响应。所以我不确定这里可能会发生什么,但这肯定会阻碍我们的 ColdFusion 10 迁移的完成。我需要找出导致这些挂起线程的确切原因。
coldfusion - fusionreactor安装错误后备存储不可用
我正在尝试在我的 ColdFusion 10 / Windows 7(32 位)系统上安装FusionReactor_windows_4_5_5 。但这给了我一个错误:
如何解决并成功安装FusionReactor?
java - 不带方法参数直接调用 cfc 时发生 ColdFusion 内存泄漏
我们的记忆问题已经很久了。我终于找到了如何复制这个问题,但我不知道是什么导致了它或如何解决它。
我们在 Web 可访问的 /controller 目录中有许多 cfc,用于处理提交和处理。当不带方法参数直接调用 cfc 时,服务器开始占用内存。
例如,像http://www.domain.com/controller/LoginController.cfc这样的 URL将在浏览器中运行,直到超时。/CFIDE 已被锁定,无法公开访问
所以 cfexplorer 不(或不应该)可用。
我们使用 FusionReactor 来监控我们的实例。我们的服务器设置为 20GB 的堆空间。在加载应用程序后重新启动时,内存将在 800MB 左右徘徊。
在正常流量下,内存将在 5GB 和 10GB 之间波动,并定期进行垃圾收集。一段时间后,服务器最终达到 98% 的容量。它倾向于在那里运行
有时可以持续数小时甚至数天,直到某些流量高峰将其推倒并发生内存不足错误。垃圾回收没有恢复内存,也没有活动
FusionReactor 报告的长时间运行的线程。只有重新启动服务器才能恢复它。
使用 FusionReactor(我们刚刚安装了它,这就是我最终了解这个问题的方式)我正在检查 PermGen 内存空间,发现它占了
85% 的堆。这似乎根本不对。我执行了一次内存转储并通过 Eclipse 将其加载到 MAP 中进行分析。我发现内存中有10个对象
测量 1.7GB(1.7x10 约为总堆的 85%)。这些对象如下所示:
所以我在我们的一台服务器上重新启动了 CF。检查了 FusionReactor 并没有看到内存使用情况。然后转到浏览器并首先像这样调用cfc:
http://www.domain.com/controller/LoginController.cfc?method=foo
这导致 onMissingMethod 处理程序正确启动并重定向到适当的错误页面,而没有服务器影响。
但是然后调用这个:
http://www.domain.com/controller/LoginController.cfc
导致页面挂起。FusionReactor 报告没有活动请求,即使一个正在运行,这就是为什么我们无法在问题发生时识别问题。更糟糕的是,刷新内存会发现它缓慢增加了十分之一的百分比,而没有报告任何活动。服务器上的超时设置为 5 分钟。我假设它最终会被杀死,然后在 1.7GB 时成为孤儿。这并没有导致服务器宕机,只是增加了它现在运行的内存,其使用量仅为 3GB,垃圾收集无法恢复任何东西。这似乎可以解释为什么随着时间的推移,对这些 URL 的随机调用会慢慢地消化并保留内存。
接下来,我从多个浏览器选项卡中调用了 URL。这几乎瞬间将内存飙升至 98%。FusionReactor 现在显示两个长时间运行的请求 10 秒并且即使有超过 15 个浏览器选项卡在运行,它也在攀升。强制杀死线程似乎无济于事。只有重新启动服务器才能解决问题。
所以现在我已经明确地确定了这个问题(幻象线程在 PermGen 堆中创建了巨大的孤立对象)以及如何复制这个问题。
我不知道如何或为什么直接向 cfc 提出请求。可能是机器人或偶尔奇怪的浏览器行为。
所有巨大的对象都是 jrun.servlet.jrpp.ProxyEndpoint 的实例。
具体是什么导致了这个问题,我该如何解决。
这是运行 Java 1.7.0_25 的 Win2003 服务器上的 CF9.01 标准。
谢谢!
coldfusion - WireBox:映射 Java 类并立即调用方法
有没有一种简单的方法可以将结果映射 createObject("java", "com.intergral.fusionreactor.api.FRAPI").getInstance()
到 WireBox 别名?
映射常规类很容易,但在这种情况下,我想保持干净,只需一步映射返回的实例的单例,而不必使用样板提供程序作为中间人。
我显然知道常规toJava()
和toDSL("javaloader:...")
基础知识,但让getInstance()
我想知道的是直接进入类的方法的重点。
我确信有一种更简单的方法可以做到这一点,但现在我只是看不到所有树木的树林。
环境详细信息:ColdBox Platform Bundle 3.8.1、Railo 4.2
提前感谢您的回复!
amazon-ec2 - 监控 I/O 请求
我的一个 Railo Web 应用程序生成了太多的 I/O 请求。
由于它托管在 Amazon Ec2 实例上,这直接影响了我的计费,因为 EBS 磁盘活动(数亿次操作)。
如何监控 I/O 请求?完美的工具可以让我找到哪个模板/组件会产生密集的 I/O。
我已经在使用 FusionReactor,它非常适合分析内存空间等,但它没有任何 I/O 功能。
apache - Amazon ec2 上的 CPU 峰值
我有一个用 CFML 编写的网站,托管在带有 Apache 和 Railo 的 Amazon ec2 istance 上……我正在尝试提高性能并减少请求调用。
以前,我在使用 CFML 查询(qoq)时遇到了一些问题,这些查询在磁盘上生成了 eccessive 读取操作……但我已经解决了删除 qoq 的问题。
阅读 Apache 和 FusionReactor 的日志,我发现与请求调用相关的 CPU 峰值很高,并且会立即出现......这个峰值每小时都会重复一次,而且在网站的未使用时刻,比如一夜之间。
我在 apache 日志上看到该请求,但不明白为什么会生成:
Soo...我认为这是一个每小时都会做一些事情的服务器配置,也是因为在不同主机上的并行网站中我没有这个峰值。我在 apache 文档中找到了这个:https ://wiki.apache.org/httpd/InternalDummyConnection
我要问的是,这个 CPU 峰值是否可以由 Apache 内部请求或其他服务器配置(如错误的 JVM 参数设置)产生。另一个想法是JVM垃圾收集器在开始清理内存时可以生成这个峰值......有一种方法可以指定GC的刷新时间吗?
有人有一些建议吗?
pdf - 使用 cfhtmltopdf 进行死锁的堆栈跟踪
我们最近切换到 CF11 并将我们的一些文件下载转换为使用cfhtmltopdf。当有多个 PDF 请求时,请求开始挂起,如 FusionReactor 中监控的那样。我可以通过仅打开三个或四个选项卡并同时请求 PDF 来复制该问题。堆栈跟踪显示最后处理的 CFM 行是 cfhtmltopdf。然后它看起来正在获取某些东西的锁,然后有两个或三个请求在这种状态下挂起。有时它们最终会解决(在 10 多分钟后),有时它们会被挂起数小时。任何人都可以对这个线程转储或问题有所了解吗?它可能是一个限制 PDF 创建的 CF 标准版?
coldfusion - 查询查询的 ColdFusion 性能含义
这是一个极端的远景,但偶尔会有一位工程师在这里知道引擎盖下发生了什么。
首先,我知道您几乎总是可以重写一些代码来避免 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 如果有帮助的话。