電信資源管理系統性能測試總結
1.1 技術問題與解決方法 1.1.1 Loadrunner JAVA 腳本 唯一參數問題 最初采用JNI 調用delphi的DLL,JAVA腳本中未使用static synchronized關鍵字時只能2個并發用戶就報錯 private static native synchronized String getUrl(); static{ // System.loadLibrary("
1.1 技術問題與解決方法
1.1.1 Loadrunner
JAVA腳本 唯一參數問題
最初采用JNI 調用delphi的DLL,JAVA腳本中未使用static synchronized關鍵字時只能2個并發用戶就報錯
private static native synchronized String getUrl();
static{
// System.loadLibrary("PairConn");
System.loadLibrary("AppServerDll");
}
加上static synchronized對于復雜DLL在高并發時還是出現錯誤,在DLL中加共享內存互斥信號量問題依然存在,網上有提到JNI對于多線程支持不是很好,最后放棄JNI接口,采用調用
服務器端的EJB來獲取參數。
最初DLL用ADO直接從
數據庫臨時表中讀參數數據,
測試過程中發現讀取參數占用大量數據庫資源,最后改為將臨時表中的數據生成數據文件,DLL和EJB都直接讀取數據文件,由于數據文件比較大,讀取參數時不能一次性把所有參數數據加載,多線程之間共享文件指針。
1.1.2 Weblogic 部署問題
1.1.2.1 創建domain
創建domain時用產品模式
1.1.2.2 更新包
通過刪除 包的cache 然后重啟實例徹底更新
停止實例
#!/bin/sh
cd /app/bea/user_projects/domains/rms7002/bin
./stop
WebLogic.sh &
刪除cache腳本
#!/bin/sh
rm -r /app/bea/user_projects/domains/rms7001/servers/AdminServer
重啟實例腳本
#!/bin/sh
cd /app/bea/user_projects/domains/rms7001
rm nohup.out
nohup ./startWebLogic.sh &
查看控制臺輸出
#!/bin/sh
tail -f /app/bea/user_projects/domains/rms7002/nohup.out
1.1.2.3
java虛擬機配置
-Xms1024m –Xmx1024m 最大不超過2G
永久域太小導致EJB無法部署 –XX:MaxPermSize=256m
1.1.2.4 連接池
初始連接和最大連接數都設置成一樣,目前設置為80
1.1.2.5 EJB配置
高并的EJB需加大 ,需修改xdoclet的EJB注釋
<pool>
<max-beans-in-free-pool>1000</max-beans-in-free-pool>
<initial-beans-in-free-pool>20</initial-beans-in-free-pool>
</pool>
1.1.3 數據庫
1.1.3.1 大數據量表分區
按500萬條記錄分一個區,pair_conn 13個分區、connector表34個分區,分別進行了分區
1.1.3.2 大并發操作表
n 刪除無用的索引和所有外鍵
n 增加表和索引的initrans 參數,connector表改到了24,其它高并發表改到16
n 增加表和索引的FREELIST參數FREELISTS 10
n 所有索引和主鍵都放入索引表空間
n 所有表和索引都改成NOLOGGING
1.1.3.3 數據導入
1.1.3.3.1 重建用戶的腳本
原文轉自:http://www.anti-gravitydesign.com