如何修复在沙箱安全性下运行速度慢得多的ColdFusion应用程序?

时间:2016-07-22 17:51:46

标签: coldfusion coldfusion-10 coldfusion-11

最近我们升级到ColdFusion 11 Enterprise,并注意到成熟的沙箱安全性往往比标准版(CF10)有更大的开销。

如何使现有的CF应用程序在沙盒安全性方面表现良好?

1 个答案:

答案 0 :(得分:5)

到目前为止,我的调查结果如下:

  • 通过将-Dcom.sun.management.jmxremote.port=8701 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false添加到CF管理员的JVM参数来安装VisualVM。了解如何使用它并特别注意CPU Snapshot&热点标签。 http://boncode.blogspot.ca/2010/04/cf-java-using-free-visualvm-tool-to.html。企业版中的FYI CF Server Monitor完全没用,因为它的内存/性能分析开销太大而不能用于实时生产服务器,并且它在负载下表现不佳,无法为您提供任何有用的数据。可能会出错。
  • 禁用IPv6,并将[serverip] [serverip]添加到操作系统的主机文件中,以加快Security Manager创建新物理数据库连接时的默认DNS反向代理查找。请参阅:On Linux, Java issues reverse DNS lookups when a socket is opened. Why, and how can I stop it?(仅供参考,Windows受影响)
  • 尽可能多地移除<cfmodule><cfinclude>,因为它们最终会导致许多java.io.File.canRead()java.io.File.exists(),这会对负载下的磁盘IO造成压力。即便是SSD也会受到负担。我已经尝试过Trusted Cache但它没有帮助。相反,尝试在application范围内使用缓存的CFC,并确保代码是线程安全的并且是local-var。
  • 尽可能地消除对<cfinterface>extendsgetMetaData()的继承的使用,因为它们最终会调用java.io.File.lastModified(),这会对负载下的磁盘IO造成压力。 Bug?
  • 取消access="package"的使用,因为它最终会有很多java.security.AccessController.checkPermission次来电。
  • 每个请求的对象越少越好,因为每次对象实例化的额外java.security.AccessController.checkPermission调用都会有更高的成本。