2007年5月26日 星期六

WebSphere 記憶體配置

啟動 WebSphere Application Server - server1 後 , 在作業系統會看到一個 Java 的 Process , 也就是一個 JVM .

JVM 所使用的記憶體可以分成兩部分 :
1.) Java Heap
- Java 程式執行時所使用的記憶體
- GC 發生作用的記憶體
2.) Native Heap
- JNI, JVM 所使用的記憶體
- 產生thread 也會需要這一塊記憶體

一般我們在調整的 Java Heap Size 指的就是 [Java Heap] 這個部份 !

JVM Memory Size = Java Heap + Native Heap

也就是說你從作業系統看到的 Java Process 吃掉的記憶體是 Java Heap + Native Heap 的總合 !

在 Windows 的環境中 , 如果你是 32 位元的作業系統 , 一個檔案最大是 2 GB , 使用的 JVM 也是 32 位元的 , 一個 JVM 的 Process 能夠處理的記憶體最大也是 2 GB .

也就是說 JVM Memory Size = Java Heap + Native Heap 最大不可以超過 2 GB .

當我們在調整 Java Heap Size 時有兩個參數 , Initial Heap Size & Max Heap Size .

之前我對 Max Heap Size 的觀唸錯了 , 我以為最大可設成 2GB , 其實最大不可以超過 1.5 GB (IBM 建議的) , 因為如果 Java Heap = 2 GB , 那 Native Heap 就 = 0 , 系統一定會 OutOfMemory !

不過如果是 64 位元的作業系統就不會有 2 GB 的限制及問題 !

不要將 Initial Heap Size & Max Heap Size 的值設成一樣 , 如果設成一樣會造成 Garbage Collection 沒有效率 , 反而會影響 WebSphere 的效能 !
但是如果是在 Trouble-Shooting 時就可以設成一樣 !

2007年5月8日 星期二

更改 MS SQL 2005 隔離層級

select snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on from sys.databases

ALTER DATABASE DB_Name
SET ALLOW_SNAPSHOT_ISOLATION ON

ALTER DATABASE DB_Name
SET READ_COMMITTED_SNAPSHOT ON