2016-07-22 52 views
3

最近我們升級到了ColdFusion 11 Enterprise,並注意到成熟的沙箱安全性往往比標準版(CF10)有更大的開銷。如何解決在沙盒安全性上運行速度慢得多的ColdFusion應用程序?

如何才能使現有CF應用程序在沙盒安全性方面表現良好?

+0

想到將這張貼到我的舊博客,但我認爲這裏張貼將會更有利於社區和搜索引擎。 – Henry

+0

出於好奇:當性能很重要時,爲什麼要運行帶有沙箱安全性的應用程序?在額外的安全環境中運行時,會不會有人期待的東西? – Alex

+0

@Alex他們都對我們很重要。我曾嘗試詢問我們是否允許在沒有沙盒安全的情況下運行它們,但答案是否定的。 – Henry

回答

5

這裏是我的發現迄今:

  • 加入-Dcom.sun.management.jmxremote.port=8701 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false到CF管理員的JVM參數安裝VisualVM。瞭解如何使用它,並特別注意CPU快照&熱點標籤。 http://boncode.blogspot.ca/2010/04/cf-java-using-free-visualvm-tool-to.html。企業版中的FYI CF服務器監控器完全沒有用處,因爲其內存/性能分析開銷太大而無法用於實時生產服務器,並且在負載情況下性能不佳,無法爲您提供任何可能的有用數據出錯了。
  • 禁用IPv6,並將[serverip] [serverip]添加到操作系統的主機文件中,以便在創建新的物理DB連接時加速默認的DNS反向代理查找Security Manager。請參閱: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在負載下也會受損。我嘗試過可信緩存,但沒有幫助。相反,請嘗試使用application作用域中的緩存CFC,並確保代碼是線程安全的並且是本地變量。
  • 儘可能消除使用<cfinterface>,繼承extendsgetMetaData(),因爲它們最終會調用java.io.File.lastModified(),這會在負載下壓入磁盤IO。 Bug?
  • 消除了使用access="package",因爲它將以很多java.security.AccessController.checkPermission調用結束。
  • 每個請求的對象數量越少越好,因爲每個對象實例在調用額外的java.security.AccessController.checkPermission時的成本較高。
相關問題