在没有方法参数的情况下直接调用cfc时,ColdFusion内存泄漏

 手机用户2502877051 发布于 2023-02-05 11:34

我们很长一段时间都有记忆问题.我终于找到了如何复制问题,但我不知道是什么导致它或如何解决它.

我们在Web可访问/控制器目录中有许多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%).这些对象如下所示:

Class Name |  Shallow Heap | Retained Heap | Percentage
byte[1769628928] @ 0x4d963b198  ...128.................POST......../controller/LoginController.cfc......../controller/LoginController.cfc........173.14.93.66........173.14.93.66........www.domain.com........443........HTTP/1.1.......;D:\websites\domain\system\controller\Lo...| 1,769,628,944 | 1,769,628,944 |   8.60%

所以我在我们的一台服务器上重启了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%.尽管有超过15个浏览器标签在运行,但FusionReactor现在显示了两个长时间运行的请求10秒并攀升.强行杀死线程似乎无能为力.只有服务器重启才能解决问题.

所以现在我已经明确地确定了这个问题(幻像线程在PermGen堆中创建巨大的孤立对象)以及如何复制问题.

如何或为何直接向cfc提出请求我不知道.可能是机器人或偶尔奇怪的浏览器行为.

所有巨大的对象都是jrun.servlet.jrpp.ProxyEndpoint的实例.

具体是什么导致了这个问题,我该如何解决它.

这是运行Java 1.7.0_25的Win2003服务器上的CF9.01 Standard.

谢谢!

堆转储的MAP分析的屏幕截图

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有