我正在尝试确定我的 ColdFusion PRODUCTION 服务器的最佳设置。该服务器具有以下规格。
ColdFusion:企业版 10
操作系统:Windows Server 2012R2 标准版
处理器:Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz
安装内存 (RAM):20.0 GB
系统类型:64 位操作系统,基于 x64 的处理器
我的 CFIDE 中的 Java 和 JVM 设置如下:
最小堆大小(单位:MB):2048
最大堆大小(单位:MB):4096JVM 参数
-server -XX:MaxPermSize=192m -XX:+UseParallelGC -Xbatch -Dcoldfusion.home={application.home} -Dcoldfusion.rootDir={application.home} -Dcoldfusion.libPath={application.home}/lib -Dorg.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true -Dcoldfusion.jsafe.defaultalgo=FIPS186Random
我在这个生产服务器上运行了多个网站,它们都使用 ColdFusion。数据库服务器是完全独立的,因此该服务器只负责 ColdFusion 应用程序和 Web 服务器进程。
这些网站完全由数据驱动,全部从位于我的生产数据库服务器上的数据库中提取。最近,我发现 ColdFusion 服务被锁定了,因为它占用了最大的 CPU。内存很稳定,只有 CPU 占用最大。
有人能提出建议,告诉我如何调整它以提高整体性能,同时减少 CPU 的压力吗?
谢谢你!
答案1
导致 CPU 垃圾收集达到最大值的最可能原因 - 实际上与内存有关。当您说“内存稳定”时,您是指系统显示 CF 仅使用您允许的 4G,还是指 ColdFusion 监视器显示内存使用情况稳定?
我认为解决您问题的方法是获得正确的 GC 和内存分配组合,以便 CPU 定期进行小规模清理,而不是偶尔进行大规模清理。但正如 Miguel 所说,找出答案的唯一方法是负载测试。jMeter 很棒。试试看。