更新時間:2021-11-19 10:01:18 來源:動力節點 瀏覽1206次
StreamBase Studio 和 StreamBase Server 的 Java VM 內存設置以不同方式獨立定義,如本頁后面部分所述。Studio 和 Server 的默認設置略有不同。此表中的設置適用于在 Windows 和 UNIX 系統上運行的 64 位服務器:
Java VM 內存設置 | 默認 StreamBase Studio 設置 | 默認 StreamBase 服務器設置 |
---|---|---|
-Xms | 256m | 1克 |
-Xmx | 768m | 2克 |
在-XX:MaxPermSize使用時設置不再使用的Java 8,而忽略此設置了JDK 8 StreamBase版本7.6.0及更高版本捆綁在一起。
此外,默認的 JVM 設置包括-XX:+UseCompressdOops.
在大多數情況下,您只需要關注 StreamBase Server 的 JVM 設置,將在以下部分進行討論。要在 Studio 中編輯非常大的應用程序,您可能需要單獨增加 Studio 的內存占用,如StreamBase Studio 的 JVM 內存中所述。
重要的如果您對上表中服務器的任何 JVM 內存參數進行顯式設置,則所有 StreamBase 服務器默認設置都將被禁用且不再適用。因此,例如,如果您明確設置 ,-Xmx4g則 的默認設置將-Xms不再適用。最簡單的解決方案是始終同時設置這兩個設置中的任何一個。
您可以通過多種方式進行顯式 JVM 設置以覆蓋默認值:在服務器配置文件中、在命令行中使用-J選項、使用STREAMBASE_JVM_ARGS環境變量或在自定義啟動腳本中。此注釋適用于您可能設置 JVM 內存設置的所有方式。
請記住,在一個 Java VM 中運行的 StreamBase Studio 在具有自己的內存限制的單獨 JVM 進程中啟動 StreamBase Server。僅增加 Studio 的內存設置無助于服務器加載大型應用程序;事實上,它可能會妨礙它。
從某種意義上說,Studio 和 Server 必須在內存受限的系統上爭奪內存資源。因此,僅將 Studio 的 JVM 內存設置增加到支持類型檢查和編輯大型應用程序的可接受響應時間的最小數量。例如,在用于編輯大型 StreamBase 應用程序的 8 GB 64 位系統上,您最多可以為 Studio 分配 2 GB,其余用于服務器啟動。
Server啟動過程中由native代碼分配的任何內存都是在JVM啟動之前分配的。因此,本機代碼服務器組件分配的內存在 JVM 堆之外,并與 Studio 和服務器競爭整體內存資源。
本機代碼內存分配包括由sbd啟動器的本機代碼部分分配的任何內存,以及由本機代碼運算符和適配器分配的內存,以及.so由運算符或適配器調用的本機代碼 DLL 或文件分配的內存。例如,sbd啟動器的本機代碼部分分配一些內存用作基于磁盤的查詢表的緩存。如果將服務器配置文件disk-querytable-cache的元素的參數調大,則分配的內存在服務器的JVM堆中不可用。
需要重申的是,Studio 是為應用程序的創作、測試和調試而設計的,但并非旨在托管 StreamBase 服務器的高性能運行或服務器運行的基準測試。
如果您在沒有配置文件的情況下啟動 StreamBase Server,它將使用上表中顯示的內部默認設置啟動。您可以在服務器配置文件中調整 StreamBase Server 的 JVM 內存設置。
當您在 Studio 中生成默認 StreamBase Server 配置文件并選擇包含默認內容時,或者當您使用sbd –s生成默認配置文件時,新文件包含元素的以下建議設置:
<java-vm>
<param name="jvm-args" value="
-XX:+使用G1GC
-XX:MaxGCPauseMillis=500 "/>
</java-vm>
垃圾收集策略設置中描述了默認的 GC 設置。
通過為上表中的-X設置添加條目,增加服務器下次啟動時可用的內存。對于中型應用程序,請使用如下設置:
-Xms1g -Xmx2g
對于大型應用程序,請使用以下設置:
-Xms2g -Xmx4g
一般情況下,StreamBase 用戶不需要為運行 Studio 調整Java虛擬機內存設置。當 Studio 在同一臺機器上運行或調試應用程序時,它會將 StreamBase Server 作為具有自己內存設置的單獨 Java 進程啟動。
當 Studio 啟動應用程序時,它會接受位于應用程序項目文件夾根目錄下的名為服務器配置文件中的設置sbd.sbconf。(Studio 不使用其他名稱的配置文件,或放置在其他文件夾中的配置文件。)因此,sbd.sbconf只要有足夠的系統內存(包括虛擬內存)以支持啟動。
對于那些編輯具有數百個組件和許多子模塊的非常大的 StreamBase 應用程序的人來說,存在一個例外。在這種情況下,更大的 Studio 內存設置可以改善類型檢查時間和系統響應時間。
通過STREAMBASE_STUDIO_VMARGS為 Studio 啟動的環境設置環境變量來調整 Studio 的 JVM 內存設置。
STREAMBASE_STUDIO_VMARGS=-Xms1024M -Xmx2048M
驗證您的機器是否有足夠的系統內存來支持同時編輯和啟動大型應用程序。64 位 Windows 和 Linux 系統應該有 4 GB 以利用大型 JVM 設置,建議使用更多。
更改 Studio JVM 內存設置時請遵循以下規則:
您可以使用STREAMBASE_STUDIO_VMARGS環境變量來設置 Studio 的 Java 屬性及其 JVM 內存設置,請記住在向變量添加屬性設置時始終指定內存設置。這可能意味著重新指定默認設置。
該-XX:MaxPermSize設置被 StreamBase 提供的 JDK 8 忽略。
-Xmx逐步提高設置,停下來測試結果。嘗試一次將 512M 添加到該-Xmx值,然后運行 ??Studio 以測試其響應能力:
-Xms512M
-Xmx1024M
接下來,嘗試:
-Xms1024M
-Xmx1536M
等等。
在安裝了 8 GB RAM 的 64 位系統上運行 64 位 Studio 以編輯大型應用程序時,請考慮以下設置:
-XX:+打印編譯
您可以配置 StreamBase Studio 以顯示其自己的 Java 堆內存使用情況。運行Window → Preferences,選擇頂層General頁面,然后選中Show heap status復選框。此后,Studio 在狀態欄的最右側(位于 Studio 窗口的右下角)顯示當前和最大保留堆內存使用情況。
要對 StreamBase Server 的內存使用情況進行診斷和故障排除,請考慮在jvm-args參數中添加這些附加設置。除非特別覆蓋,否則這些設置會導致向服務器控制臺(或 Studio 中的控制臺視圖)報告其他信息。
要查看有關 Java 即時 (JIT) 編譯器 (HotSpot) 的信息,請嘗試添加:
STREAMBASE_STUDIO_VMARGS=-Xms1024M -Xmx4096M
如果 JVM 使用過多內存,或者花費太多時間執行垃圾收集,請嘗試添加此參數以獲取更具體的信息:
-詳細:gc
有了這個參數,JVM 會定期生成輸出,告訴您 Java 堆大小有多大以及在垃圾收集上花費了多少時間。Java 8 的垃圾收集子系統比早期版本有了很大改進,因此對于捆綁 JDK 8 的 StreamBase 版本 7.6.0 及更高版本,此設置可能不太必要。
如果為 StreamBase 運算符執行生成的代碼不是最佳的,請嘗試添加-Xprof到 JVM 參數集。再次運行您的應用程序,然后將生成的信息發送給您的 TIBCO StreamBase 代表。
您還可以使用 StreamBase 提供的或作為其 Java 安裝的一部分包含的以下工具來檢查內存使用情況。這些工具按照應用程序級別到 Java 對象級別檢查的順序列出。
使用StreamBase Manager或StreamBase Monitor查看應用程序級內存使用模式和實時隊列大小。
使用 StreamBase分析來查看操作員和隊列隨時間的變化。
使用 Java JConsole 實用程序查看 JVM 級內存使用模式、實時對象和線程。
使用 Java jmap實用程序可以隨時查看堆上的 Java 對象。也可以使用Eclipse插件MAT(Memory Analyzer Tool)將jmap的輸出以圖形的形式展示出來。
使用 Java jstack實用程序可以隨時查看哪些Java線程在工作。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習