【问题标题】:ColdFusion server crashing on hourly basisColdFusion 服务器每小时崩溃
【发布时间】:2013-11-29 07:08:38
【问题描述】:

我正面临严重的 ColdFusion 服务器崩溃问题。我在该服务器上有许多实时站点,所以这很严重且紧急。

系统规格如下:

Windows Server 2003 R2,企业 X64 版,Service Pack 2 ColdFusion (8,0,1,195765) 企业版

以下是硬件规格:

Intel(R) Xeon(R) CPU E7320 @2.13 GHZ, 2.13 GHZ 31.9 GB 内存

它在每小时的基础上崩溃。有人可以帮我找出确切的问题吗?我试图通过 ColdFusion 日志文件找到它,但我在那里找不到任何东西。每次崩溃时,我都必须重置 ColdFusion 服务才能恢复。

编辑1

当我看到运行时日志文件“ColdFusion-out165.log”时,我发现了以下错误

error ROOT CAUSE: 
java.lang.OutOfMemoryError: Java heap space

javax.servlet.ServletException: ROOT CAUSE: 
java.lang.OutOfMemoryError: Java heap space

04/18 16:19:44 error ROOT CAUSE: 
java.lang.OutOfMemoryError: GC overhead limit exceeded

javax.servlet.ServletException: ROOT CAUSE: 
java.lang.OutOfMemoryError: GC overhead limit exceeded

这是我当前的 JVM 设置:

如你所见,我的 JVM 设置是

最小 JVM 堆大小 (MB):512

最大 JVM 堆大小 (MB):1024

JVM 参数

-server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=512m -XX:+UseParallelGC -Dcoldfusion.rootDir={application.home}/../ -Dcoldfusion.libPath={application.home}/../lib

注意:- 当我尝试将最大 JVM 堆大小增加到 1536 并尝试重置冷融合服务时,它不允许我启动它们并给出以下错误。

“Windows 无法在本地计算机上启动 ColdFusion MX 应用程序服务器。有关详细信息,请查看系统事件日志。如果这是非 Microsoft 服务,请联系服务供应商,并参阅特定于服务的错误代码 2 。”

我应该无法将最大堆大小设置为 1.8 GB,因为我使用的是 64 位操作系统。不是吗?

【问题讨论】:

  • 无法判断问题出在哪里,您所告诉我们的只是您的服务器规格。另外,它实际上是每小时崩溃还是你只是频繁地崩溃?如果是每小时一次,我会说检查您正在运行的计划任务之类的事情。
  • 正如@duncan 所说。告诉我们您在日志中看到的内容,以便得出解决方案。
  • 日志中一定有内容。检查 jrun4\logs\cfusion-out.log
  • 可能还值得看看@CF 状态,看看是否有许多线程正在排队和/或 SQL 服务器(假设有一个 SQL 后端),以防有慢查询导致问题。不过,正如邓肯所说,不可能真正从您的描述中提供任何有用的建议。
  • @Miguel-F 正如你所说,我检查了 cfusion-out.log 并在原始帖子中添加了我的发现。请检查edit1,看看你现在是否得到一些线索。非常感谢您的帮助。

标签: coldfusion coldfusion-8


【解决方案1】:

您可以为您的 JVM 提供多少内存取决于您的 JVM,而不是您的操作系统。您正在运行 64 位 CF 安装吗?在 CF8 时代,这是一件不常见的事情,所以值得一问。

基本上,该错误表明您使用的 RAM 过多,而您有多少可用内存(您知道)。我会看看你在会话和应用程序范围中投入了多少东西,并剔除不必要的东西。

会话范围内的对象特别糟糕:它们的足迹比人们想象的要大得多,并且造成的麻烦比它们的价值要多。

我还会查看您有多少非活动但未超时的会话,以期对您的会话超时更具侵略性。

查看您的查询,删除您拥有的任何SELECT *,并将它们缩减为您需要的列。将数据处理推回数据库,而不是在 CF 中进行。

农场计划任务转移到不同的 CF 实例。

您是否正在处理大文件?要么阅读和处理它们,要么通过<cfcontent> 服务它们?这可以非常快速地咀嚼记忆。

您在 CFC 中的所有函数局部变量是否都经过了正确的 VAR 处理?尤其是 CFC 中的最终在共享范围内的那些。

您是否不小心打开了调试功能?

您是否大量使用通过<cfmodule> 调用的自定义标签或文件?我听说过自定义标签导致内存泄漏的杜撰故事。

获取Mike Brunt 或Charlie Arehart 以查看您的服务器配置/应用程序(他们显然会收取咨询费)。

当我想到更多需要注意的地方时,我会更新此内容。

【讨论】:

  • 您提供的信息非常有帮助,最后我能够摆脱崩溃。谢谢
  • 您是否具体找到了导致问题的原因?
  • 基本上,那是我的 JVM 崩溃了,我不得不以某种方式增加它的内存。但是由于 ColdFusion 32 位,它并没有让我增加它。然后我安装了 ColdFusion 64 位并增加了 JVM 内存大小,它对我有用。现在一切似乎都很正常。
【解决方案2】:

在管理员中打开 ColdFusion 监视器。用它来观察行为。查找长时间运行的进程和错误。

另外,请确保在 ColdFusion Server Monitor 中关闭内存监控。这将轻松关闭生产服务器。

【讨论】:

    【解决方案3】:

    @阿迪尔, 我有同样的问题,但它没有崩溃,但 CPU 使用率高达 100%,不确定它是否与您的问题相关,但至少值得一看。 请参阅以下 URL 中的问题:

    Strange JRUN issue. JRUN eating up 50% of memory for every two hours

    我的博客条目

    http://www.thecfguy.com/post.cfm/strange-coldfusion-issue-jrun-eating-up-to-50-of-cpu

    对我来说,这是一个高流量站点,并且将客户端变量存储在注册表中,这会导致事情出错。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2017-07-29
      • 1970-01-01
      相关资源
      最近更新 更多