亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
打印 上一主題 下一主題

[WebLogic] 中間件WebLogic/Tuxedo/GoldenGate的排錯(cuò)與優(yōu)化(獲獎(jiǎng)名單已公布) [復(fù)制鏈接]

論壇徽章:
0
51 [報(bào)告]
發(fā)表于 2012-02-16 20:56 |只看該作者
Shell_HAT 發(fā)表于 2012-02-16 11:26
回復(fù) 47# zorrohu


1個(gè)小時(shí)幾G?  {:2_167:}

暈子一個(gè)

論壇徽章:
1
技術(shù)圖書徽章
日期:2014-07-11 16:30:58
52 [報(bào)告]
發(fā)表于 2012-02-17 21:40 |只看該作者
本帖最后由 manULinux 于 2012-02-17 21:41 編輯

干了快3年了一值是前后臺 文檔一條龍。呵呵。

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽(yù)版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀(jì)念徽章
日期:2015-07-20 11:05:27IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
53 [報(bào)告]
發(fā)表于 2012-02-17 21:54 |只看該作者
1、WebLogic內(nèi)存溢出專題探討

Weblogic內(nèi)存遺漏,不外乎也就兩種情況,一種是虛擬機(jī)內(nèi)存參數(shù)設(shè)置不合理,造成Weblogic運(yùn)行一段時(shí)候后內(nèi)存分配不足,而造成內(nèi)存遺漏的發(fā)生;第二種情況不外乎就是我們的程序?qū)懙牟缓,分配的?nèi)存沒有及時(shí)的釋放而造成內(nèi)存泄漏情況的發(fā)生。
關(guān)于內(nèi)存泄漏問題,我們一般會從應(yīng)用程序出發(fā),去審核代碼,做到代碼級的優(yōu)化,然后再調(diào)整應(yīng)用服務(wù)器(BEA WebLogic8.1)和數(shù)據(jù)庫 (Oracle9i)的參數(shù),最后當(dāng)然是調(diào)整操作系統(tǒng)和網(wǎng)絡(luò)的性能(包括硬件升級)。這是一種MDA的先進(jìn)做法。
2、Goldengate數(shù)據(jù)遷移注意事項(xiàng)及常見問題

這個(gè)我沒有做過,暫時(shí)不知道。
3、Tuxedo中IPC相關(guān)故障探討

1. 非圖形界面下的安裝
./tuxedo81_aix_32bit.bin -i console 加入 -i console則不需要圖形支持

2.察看版本和patch信息
$TUXDIR/bin/tmadmin -v

3.對ubb文件只做語法檢查(不真正的load成TUXCONFIG 真正tmloadcf -y)
tmloadcf -n ubb  

4.tmboot/tmshutdown中的幾個(gè)參數(shù)介紹
-A 只啟動(dòng)/停止Tuxedo管理服務(wù),如BBL
-S 所有服務(wù)被啟動(dòng)/停止
-g grpname 只啟動(dòng)/停止屬于制定組名的服務(wù)
-i svrid 只啟動(dòng)/停止制定ServID的服務(wù)
-s svrname 只啟動(dòng)/停止制定服務(wù)名的服務(wù)

5. tuxedo有關(guān)域(domain)管理的命令
$ dmadmin
>pd -d LocalTUXDomainID 顯示與本地域關(guān)聯(lián)的其他域
>co -d LocalTUXDomainID -R RemoteDomainID 手動(dòng)連接遠(yuǎn)程域

6.如何清除IPC資源
如果你不想用tmshutdown停止或者當(dāng)$TUXCONFIG文件被誤刪除而無法shutdown TUXEDO服務(wù)時(shí),可以嘗試直接刪除當(dāng)前用戶的ipc資源,如下:
ipcs | grep `logname` | awk '{print "ipcrm -"$1,$2}' |sh -x

7.反編譯tuxconfig 生成 ubb文件
a) tmunloadcf 查看當(dāng)前TUXCONFIG中的ubb內(nèi)容
b) export TUXCONFIG=`pwd`/tuxconfig 比較簡單的設(shè)置TUXCONFIG的命令

8.Tuxedo非正常狀態(tài)下的關(guān)閉
1) 執(zhí)行tmshutdown -y,如果shutdown不成功,轉(zhuǎn)入下一步(此時(shí)一般來說,TUXEDO的狀態(tài)已經(jīng)處于
不正常了)。
2)執(zhí)行tmipcrm -y,如果shutdown不成功,轉(zhuǎn)入下一步。
3)要用到AWK,所以要求在Unix下,或者在WINDOWS下裝了Cygwin。
3)執(zhí)行ipcrm `ipcs|grep $USER|awk '{print " -"$1" "$2}'`。
執(zhí)行了3)肯定就可以關(guān)閉掉了。
一般情況下,我也懶得那么麻煩,在非生產(chǎn)機(jī)上經(jīng)常來一個(gè)killall -9,將該用戶所有的進(jìn)程都?xì)⒌簟?br />
9.隱藏顯示服務(wù)
隱藏服務(wù)
unadvertise (unadv) {-q qaddress [-g groupname] [-i srvid] |
-g groupname -i srvid} service
顯示服務(wù)
advertise (adv) {-q qaddress [-g groupname] [-i srvid] | -g groupname -i srvid}
service[:func]

上面兩個(gè)命令只能在單獨(dú)登錄tmadmin時(shí)使用。
重復(fù)登錄tmadmin后出現(xiàn)
TMADMIN_CAT:199: WARN: Cannot become administrator.Limited set of commands available.
提示不能使用上面命令。

10.sh命令直接執(zhí)行tuxedo操作

$echo pclt |tmadmin
$echo pq |tmadmin |grep Machine

11.WSL配置參數(shù)
WSL的配置重點(diǎn)要注意其CLOPT中幾個(gè)關(guān)鍵參數(shù)的指定:
-m, -M, -x, WSH啟動(dòng)的最大、最小個(gè)數(shù),及每個(gè)WSH可同時(shí)處理的并發(fā)請求數(shù),
"-M" * "-x" = MAXWSCLIENTS;
-I, 客戶端與服務(wù)器端建立連接的超時(shí)時(shí)間;
-N, 客戶端發(fā)起請求的響應(yīng)超時(shí)時(shí)間;
-T, 客戶端在與服務(wù)器端建立連接后,允許最大的空閑時(shí)間;
-H, 穿防火墻時(shí),防火墻的ip
-p, WSH分配的起始端口
-P, WSH分配的結(jié)束端口。 -p 9901 -P 9915 指定端口范圍 9901-9915

12.UBB文件中MAX。。的配置
MAXWSCLIENTS <= Tuxedo license
MAXSERVERS = SUM (MAX setting of servers)
MAXACCESSERS = (MAXSERVERS+MAXWSCLIENTS) * 117%


4、常見的中間件調(diào)優(yōu)手段

2.1 JVM調(diào)優(yōu)
2.1.1 垃圾收集和堆大小
  垃圾收集(GC)是指JVM釋放Java堆中不再使用的對象所占用的內(nèi)存的過程,而Java堆(Heap)是指Java應(yīng)用程序?qū)ο笊娴目臻g。堆大小決定了GC的頻度和時(shí)間。堆越大,GC頻度低,速度慢。堆越小,GC頻度高,速度快。所以GC和堆大小是一組矛盾。為了獲取理想的Heap堆大小,需要使用-verbosegc參數(shù)(Sun jdk: -Xloggc:<file>)以打開詳細(xì)的GC輸出。分析GC的頻度和時(shí)間,結(jié)合應(yīng)用最大負(fù)載所需內(nèi)存情況,得出堆的大小。
通常情況下,我們建議使用可用內(nèi)存(除操作系統(tǒng)和其他應(yīng)用程序占用之外的內(nèi)存)70-80%,為避免堆大小調(diào)整引起的開銷,設(shè)置內(nèi)存堆的最小值等于最大值即:-Xms=-Xmx。而為了防止內(nèi)存溢出,建議在生產(chǎn)環(huán)境堆大小至少為256M(Platform至少512M),實(shí)際環(huán)境中512M~1G左右性能最佳,2G以上是不可取的,在調(diào)整內(nèi)存時(shí)可能需要調(diào)整核心參數(shù)進(jìn)程的允許最大內(nèi)存數(shù)。對于sun和hp的jvm,永久域太小(默認(rèn)4M)也可能造成內(nèi)存溢出,應(yīng)增加參-XX:MaxPermSize=128m。建議設(shè)置臨時(shí)域-Xmn的大小為-Xmx的1/4~1/3, SurvivorRatio為8。

  為了獲得更好的性能,建議在啟動(dòng)文件設(shè)置WebLogic為產(chǎn)品模式,此時(shí)sun和hp jvm JIT引擎為-server,默認(rèn)情況下打開JIT編譯模式對性能也有幫助。調(diào)整Chunk Size和Chunk Pool Size也可能對系統(tǒng)的吞吐量有提高。此外還需關(guān)閉顯示GC: -XX:+DisableExplicitGC。

  當(dāng)然在Intel平臺上使用jRockit(使用參數(shù)-jrockit)無疑大大提高WebLogic性能。

2.1.2 jRockit調(diào)優(yōu)
  jRockit支持四種垃圾收集器:分代復(fù)制收集器、單空間并發(fā)收集器、分代并發(fā)收集器和并行收集器。默認(rèn)狀態(tài)下,JRockit使用分代并發(fā)收集器。要改變收集器,可使用-Xgc:<gc-name>,對應(yīng)四個(gè)收集器分其他為gencopy, singlecom, gencon以及parallel。為得到更好的響應(yīng)性能,應(yīng)該使用并發(fā)垃圾回收器:-Xgc:gencon,可使用-Xms和-Xmx設(shè)置堆棧的初始大小和最大值,要設(shè)置護(hù)理域-Xns為-Xmx的10%。而如果要得到更好的性能,應(yīng)該選用并行垃圾回收器:-Xgc: parallel,由于并行垃圾回收器不使用nursery,不必設(shè)置-Xns。

  如果你的線程大于100或者在linux平臺下,可以嘗試使用瘦線程模式:-Xthinthread,同時(shí)關(guān)閉Native IO:-Xallocationtype:global。

  jRockit 還提供了強(qiáng)大的圖形化監(jiān)控工具Jrockit Management Console。欲詳細(xì)了解JRockit可訪問:http://edocs.bea.com/wljrockit/docs81/index.html。




2.2 Server調(diào)優(yōu)
  WebLogic Server的核心組件由監(jiān)聽線程,套接字復(fù)用器和可執(zhí)行線程的執(zhí)行隊(duì)列組成。當(dāng)服務(wù)器由監(jiān)聽線程接收到連接請求后,將對它的連接控制權(quán)交給等待接收請求的套接字復(fù)用器。然后套接字復(fù)用器讀取離開套接字的請求,并將此請求及相關(guān)安全信息或事務(wù)處理環(huán)境一起置入適當(dāng)?shù)膱?zhí)行隊(duì)列中(一般為默認(rèn)的執(zhí)行隊(duì)列)。 當(dāng)有一個(gè)請求出現(xiàn)在執(zhí)行隊(duì)列中時(shí),就會有一個(gè)空閑的執(zhí)行線程從該隊(duì)列中取走發(fā)來的該請求,并返回應(yīng)答,然后等待下一次請求。因此要提高WebLogic的性能,就必須從調(diào)整核心組件性能出發(fā)。

2.2.1 盡量使用本地I/O庫
WebLogic Server有兩套套接字復(fù)用器:Java版和本地庫。采用小型本地庫更有效,盡量激活Enable Native IO(默認(rèn)),此時(shí)UNIX默認(rèn)使用CPUs+1個(gè)線程,Window下為雙倍CPU。如果系統(tǒng)不能加載本地庫,將會拋出java.lang.UnsatisfiedLinkException,此時(shí)只能使用Java套接字復(fù)用器,可以調(diào)整socket readers 百分比,默認(rèn)為33%。該參數(shù)可以在Console Server Tuning Configuration配置欄里設(shè)置。

2.2.2 調(diào)整默認(rèn)執(zhí)行線程數(shù)
  理想的默認(rèn)執(zhí)行線程數(shù)是由多方面的因素決定的,比如機(jī)器CPU性能、總線體系架構(gòu)、I/O、操作系統(tǒng)的進(jìn)程調(diào)度機(jī)制、JVM的線程調(diào)度機(jī)制。WebLogic生產(chǎn)環(huán)境下默認(rèn)的線程為25個(gè),隨著CPU個(gè)數(shù)的增加,WebLogic可以近乎線性地提高線程數(shù)。線程數(shù)越多,花費(fèi)在線程切換的時(shí)間也就越多,線程數(shù)越小,CPU可能無法得到充分利用。為獲取一個(gè)理想的線程數(shù),需要經(jīng)過反復(fù)的測試。在測試中,可以以25*CPUs為基準(zhǔn)進(jìn)行調(diào)整。當(dāng)空閑線程較少,CPU利用率比較低時(shí),可以適當(dāng)增加線程數(shù)的大小(每五個(gè)遞增)。對于PC Server 和Window 2000,則最好每個(gè)CPU小于50個(gè)線程, 以CPU利用率為90%左右為佳。由于目前WebLogic執(zhí)行線程沒有縮小線程數(shù)的功能,所以應(yīng)將參數(shù)Threads Increase設(shè)置為0,同時(shí)不應(yīng)改變優(yōu)先級的大小。

2.2.3 調(diào)整連接參數(shù)
  WebLogic Server用Accept Backlog參數(shù)規(guī)定服務(wù)器向操作系統(tǒng)請求的隊(duì)列大小,默認(rèn)值為50。當(dāng)系統(tǒng)重載負(fù)荷時(shí),這個(gè)值可能過小,日志中報(bào)Connection Refused,導(dǎo)致有效連接請求遭到拒絕,此時(shí)可以提高Accept Backlog 25%直到連接拒絕錯(cuò)誤消失。對于Portal類型的應(yīng)用,默認(rèn)值往往是不夠的。Login Timeout和SSL Login Timeout參數(shù)表示普通連接和SSL連接的超時(shí)時(shí)間,如果客戶連接被服務(wù)器中斷或者SSL容量大,可以嘗試增加該值。這些參數(shù)可以在Console Server Tuning Configration配置欄里找到。

2.2.4 創(chuàng)建新的執(zhí)行隊(duì)列
  創(chuàng)建新的執(zhí)行隊(duì)列有助于解決核心業(yè)務(wù)優(yōu)先、避免交叉阻塞、死鎖和長時(shí)間處理的業(yè)務(wù)等問題。通常會將自己的執(zhí)行隊(duì)列和默認(rèn)的執(zhí)行隊(duì)列設(shè)置不同的優(yōu)先級,這里優(yōu)先級不應(yīng)設(shè)為9或者10。 定義一個(gè)新的執(zhí)行隊(duì)列很容易,利用View Excute Queue選項(xiàng)中的Configure a new Excute Queue鏈接即可定制新的執(zhí)行隊(duì)列。創(chuàng)建新的執(zhí)行隊(duì)列后,用戶需要為應(yīng)用程序的J2EE組件配置分配策略,以便它可以找到新的隊(duì)列。舉個(gè)例子:要將servlet或jsp捆綁到一個(gè)特定的執(zhí)行隊(duì)列,必須替換web.xml文件項(xiàng),將wl-dispatch-policy初始化參數(shù)設(shè)置為自己的執(zhí)行隊(duì)列名。

<servlet>
<servlet-name>servletname</servlet-name>
<jsp-file>/directoryname/deployment.jsp</jsp-file>
<init-param>
<param-name>wl-dispatch-policy</param-name>
<param-value>NewExecuteQueueName</param-value>
</init-param>
</servlet>

  我們可以為一個(gè)jsp或者servlet乃至一個(gè)WEB應(yīng)用設(shè)置自己的執(zhí)行隊(duì)列。同時(shí)也可以為EJB設(shè)置自己的執(zhí)行隊(duì)列。對于執(zhí)行時(shí)間比較長的MDB,建議使用自己的執(zhí)行隊(duì)列。

2.3 JDBC調(diào)優(yōu)
2.3.1 調(diào)整連接池配置
  JDBC Connection Pool的調(diào)優(yōu)受制于WebLogic Server線程數(shù)的設(shè)置和數(shù)據(jù)庫進(jìn)程數(shù),游標(biāo)的大小。通常我們在一個(gè)線程中使用一個(gè)連接,所以連接數(shù)并不是越多越好,為避免兩邊的資源消耗,建議設(shè)置連接池的最大值等于或者略小于線程數(shù)。同時(shí)為了減少新建連接的開銷,將最小值和最大值設(shè)為一致。

  增加Statement Cache Size對于大量使用PreparedStatement對象的應(yīng)用程序很有幫助,WebLogic能夠?yàn)槊恳粋(gè)連接緩存這些對象,此值默認(rèn)為10。在保證數(shù)據(jù)庫游標(biāo)大小足夠的前提下,可以根據(jù)需要提高Statement Cache Size。比如當(dāng)你設(shè)置連接數(shù)為25,Cache Size為10時(shí),數(shù)據(jù)庫可能需要打開25*10=250個(gè)游標(biāo)。不幸的是,當(dāng)遇到與PreparedStatement Cache有關(guān)的應(yīng)用程序錯(cuò)誤時(shí),你需要將Cache Size設(shè)置為0。

  盡管JDBC Connection Pool提供了很多高級參數(shù),在開發(fā)模式下比較有用,但大部分在生產(chǎn)環(huán)境下不需調(diào)整。這里建議最好不要設(shè)置測試表, 同時(shí)Test Reserved Connections和Test Released Connections也無需勾上。 當(dāng)然如果你的數(shù)據(jù)庫不穩(wěn)定,時(shí)斷時(shí)續(xù),你就可能需要上述的參數(shù)打開。

  最后提一下驅(qū)動(dòng)程序類型的選擇,以O(shè)racle為例,Oracle提供thin驅(qū)動(dòng)和oci驅(qū)動(dòng),從性能上來講,oci驅(qū)動(dòng)強(qiáng)于thin驅(qū)動(dòng),特別是大數(shù)據(jù)量的操作。但在簡單的數(shù)據(jù)庫操作中,性能相差不大,隨著thin驅(qū)動(dòng)的不斷改進(jìn),這一弱勢將得到彌補(bǔ)。而thin驅(qū)動(dòng)的移植性明顯強(qiáng)于oci驅(qū)動(dòng)。所以在通常情況下建議使用thin驅(qū)動(dòng)。而最新驅(qū)動(dòng)器由于WebLogic server/bin目錄下的類包可能不是最新的,請以O(shè)racle網(wǎng)站為準(zhǔn): http://www.oracle.com/technology ... tdocs/jdbc9201.html。

2.4 WEB調(diào)優(yōu)
2.4.1 調(diào)整WEB應(yīng)用描述符
  WEB應(yīng)用除代碼之外的調(diào)優(yōu)比較簡單,僅僅是對一些WEB應(yīng)用描述符的調(diào)整。首先關(guān)閉Session Monitoring Enabled,僅僅在Cluster環(huán)境下設(shè)置Session復(fù)制(優(yōu)先使用內(nèi)存復(fù)制),在保證應(yīng)用正常運(yùn)行的情況下,設(shè)置較短的Session超時(shí)時(shí)間。 同時(shí)生產(chǎn)環(huán)境下無需檢查Jsp和servlet:JSPPage Check Secs和Servlet Reload Check Secs均設(shè)為-1,關(guān)閉JSPKeep Generated 和JSPVerbose對性能也有幫助。此外,還可以對jsp進(jìn)行預(yù)編譯,有兩種方法:激活precompile選項(xiàng);使用weblogic.appc事先編譯,建議采用后者。

2.5 JMS調(diào)優(yōu)
  1. 增加-Dweblogic.JMSThreadPoolSize=n(至少為5),以提高處理JMS的線程數(shù),在jRockit上增加-XXenablefatspin以減少加鎖沖突;
  2. 采用文件存儲策略,將同步寫策略設(shè)置為Direct-Write,同時(shí)在windows平臺上啟用磁盤寫入緩存;
  3. 使用分布式目的地時(shí),激活連接工廠Load Balancing Enabled ,Server Affinity Enabled;
  4. 為減少服務(wù)器不必要的JMS請求路由,如果多個(gè)目的地之間存在事務(wù),則部署在同一JMS服務(wù)器上,盡量將連接工廠部署到JMS服務(wù)器所在的WebLogic實(shí)例上,集群環(huán)境下,則最好將連接工廠部署到集群中的所有服務(wù)器上,而集群中每個(gè)JMS服務(wù)器和目的地成員盡量使用類似的設(shè)置;
  5. 啟用消息分頁存儲功能,以釋放內(nèi)存,可以為JMS服務(wù)器和目的地設(shè)置, 激活Messages Paging Enabled和Bytes Paging Enabled,同時(shí)使用限額防止服務(wù)器耗盡接收消息的所有可用內(nèi)存空間;
  6. 在運(yùn)行WebLogic Server進(jìn)程之外的生產(chǎn)者務(wù)必使用流控制, 并增大Send Timeout;
  7. 將JMS Server Expiration Scan Interval設(shè)很大的值,能禁止主動(dòng)掃描過期消息;
  8. 使用FIFO或者LIFO方式處理目的地消息;
  9. MDB的max-beans-in-free-pool不應(yīng)大于最大MDB線程數(shù)(默認(rèn)線程數(shù)/2+1)。

2.6 EJB調(diào)優(yōu)
2.6.1 調(diào)整pool和cache
  initial-beans-in-free-pool定義SLSB啟動(dòng)時(shí)實(shí)例的個(gè)數(shù),默認(rèn)為0,可以調(diào)大到正常并發(fā)數(shù)的大小,以減少初始響應(yīng)時(shí)間。max-beans-in-free-pool為最大個(gè)數(shù),默認(rèn)1000對SLSB來說,在頻繁創(chuàng)建和刪除實(shí)例的情況下很有幫助,一般不用調(diào)整,至少設(shè)為默認(rèn)線程數(shù),過大容易造成內(nèi)存溢出。而對Entity Bean來說,由于是匿名的,所以當(dāng)頻繁使用finder、home和create方法時(shí)可以調(diào)大。

  對SFSB來說,盡量將max-beans-in-cache參數(shù)設(shè)置得足夠的大,以滿足Bean實(shí)例對最大并發(fā)用戶數(shù)的要求,可以避免有狀態(tài)會話Bean過多的鈍化行為。而idle-timeout-seconds盡量設(shè)置小,如果SFSB不用于存儲Web應(yīng)用會話狀態(tài)可以設(shè)置為0。

  對于Entity Bean來說, max-beans-in-cache同樣可以首先采用默認(rèn)值1000,監(jiān)控實(shí)例緩存和鈍化的情況,再做適當(dāng)調(diào)整。

  并行策略concurrency-strategy定義了實(shí)體Bean如何管理鎖,有四種策略: Exclusive、Databse、ReadOnly、Optimistic。效率依次提高,可靠性依次降低,盡量避免使用互斥策略,如果Bean無需更新操作,使用只讀策略,更甚的是,如果Bean的內(nèi)容不會改變,可設(shè)置read-timeout-seconds為0,樂觀并行策略時(shí)采用事務(wù)間緩存策略,在entity-cache描述符中將cache-between-transactions元素設(shè)為true。

2.6.2 優(yōu)化事務(wù)隔離級別和事務(wù)屬性
  對EJB組件來說,有四種事務(wù)隔離水平:

TRANSACTION-SERIALIZABLE:在處理完成之前拒絕其他處理的讀入、可擴(kuò)展性或插入數(shù)據(jù)操作;
TRANSACTION-REPEATABLE-READ:防止處理修改正在被其他處理調(diào)用的數(shù)據(jù);
TRANSACTOIN-READ-COMMITTED:防止對正在被其他處理修改的數(shù)據(jù)執(zhí)行寫鎖定;
TRANSACTION-READ-UNCOMMITTED:允許處理讀入未受權(quán)的數(shù)據(jù)以及允許在向結(jié)果中添加記錄時(shí)可以忽略處理。
   以上隔離水平依次降低,效率和性能依次提高。因此,建議選用滿足在業(yè)務(wù)數(shù)據(jù)完整性要求前提下水平最低的隔離級別。

  對于事務(wù)屬性的設(shè)置也是如此,對于刪除、修改和插入操作設(shè)置為Required,而對于只讀操作設(shè)置為Supports或者NotSupports。

2.6.3 其他一些小技巧
  1. 利用finders-load-bean的默認(rèn)值true,既可以避免“n+1”的查詢問題,又可以提高系統(tǒng)的性能;
  2. 使用delay-updates-until-end-of-tx參數(shù)的默認(rèn)值true,除非應(yīng)用程序?qū)δ承┳兓刑貏e的要求;
  3. 應(yīng)用程序在每個(gè)業(yè)務(wù)方法調(diào)用后不需要進(jìn)行存在性檢查,將check-exists-on-method設(shè)定為false,以提高程序的性能;
  4. 同一應(yīng)用內(nèi), 將enable-call-by-reference設(shè)置為 true;
  5. reentrant設(shè)置為false,避免事先加載子數(shù)據(jù)。


論壇徽章:
1
技術(shù)圖書徽章
日期:2014-07-11 16:30:58
54 [報(bào)告]
發(fā)表于 2012-02-17 22:14 |只看該作者
4、常見的中間件調(diào)優(yōu)手段
談?wù)勥@個(gè)吧 。
基本上是
1 log 輸入 tail -f 看文件日志。
2 調(diào)用 cl32 調(diào)用tuxedo  程序。
3 觀察日志。與返回結(jié)果。
1)如果程序core  使用file core 可以看到是哪個(gè)程序產(chǎn)生的core 文件,如果是你當(dāng)前的程序
那么直接
$>gdb -o core
gdb> where
看堆棧情況。觀察哪個(gè)地方出現(xiàn)文件。  
2)如果是調(diào)用SQL 報(bào)錯(cuò)基本上輸入會加上 SQLCODE 打印, SQL是否出現(xiàn)問題。哪行打印的可以使用log4c
如果是可以使用
$>oerr ora  ( SQLCODE值)
查看什么原因?qū)е碌腟QL問題。
4 程序邏輯問題當(dāng)然這個(gè)跟具體的業(yè)務(wù)要求了。 修改文件 保存,編譯,返回第2步驟 LOOP(直到業(yè)務(wù)邏輯正確,程序運(yùn)行正常,可以寫測試報(bào)告了呵呵。)

注意:
善用 輸出信息
1 必要的輸入是要有的。 關(guān)鍵是如果你的程序部署到生產(chǎn)上,用戶投訴讓你查個(gè)問題。你找不到錯(cuò)誤輸出信息。那完了。
2 不要加過多的輸出,弄的幾乎把每個(gè)步驟都打印出來。 多大的空間能夠呀。有些業(yè)務(wù)幾乎是沒秒10多個(gè)進(jìn)來在加那么多沒有必要的東西。查個(gè)問題的多費(fèi)勁呀。當(dāng)然調(diào)試GDB是不太好用的可以詳細(xì)加輸出,但調(diào)試完通過后請讓你的程序干凈些。
可讀性
公司一般會要求編碼格式,不過基本上是Ctrl+c Ctrl+v  改改就完了。 有的連自己為什么這么寫都不清楚,以后別人維護(hù)起來你讓不讓人活了。(有點(diǎn)個(gè)人情緒。沒辦法。來氣。受害者。) 試過各類的格式工具對tuxedo 的支持都不是很理想。一直想寫個(gè)工具,對tuxedo 和jsp 想這些特殊的程序 進(jìn)行格式化優(yōu)化工具。(還在完善中......)。
性能
1 SQL  SQL直接行影響 tuxedo 程序能能,主鍵,索引, exists ,  類型,等等,各個(gè)方面影響 程序的性能。說以寫好tuxedo 程序首先的寫好SQL。
2 就是C語言的編程能力, 變量初始化。 避免溢出,程序core 掉。 多余的變量去掉。
使用DECODE函數(shù)來減少處理時(shí)間
        使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表.
        示例:
        SELECT COUNT(*),SUM(SAL)
        FROM EMP
        WHERE DEPT_NO = 0020
        AND ENAME LIKE ‘SMITH%';
       
        SELECT COUNT(*),SUM(SAL)
        FROM EMP
        WHERE DEPT_NO = 0030
        AND ENAME LIKE ‘SMITH%';
       
        可以用DECODE函數(shù)高效地得到相同結(jié)果
        SELECT COUNT(DECODE(DEPT_NO,0020,'X',NULL)) D0020_COUNT,
        COUNT(DECODE(DEPT_NO,0030,'X',NULL)) D0030_COUNT,
        SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
        SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
        FROM EMP
        WHERE ENAME LIKE ‘SMITH%';
       
        類似的,DECODE函數(shù)也可以運(yùn)用于GROUP BY 和ORDER BY子句中
建議用UNION替換OR (適用于索引列)
        通常情況下, 用UNION替換WHERE子句中的OR將會起到較好的效果. 對索引列使用OR將造成全表掃描. 注意, 以上規(guī)則只針對多個(gè)索引列有效. 如果有column沒有被索引, 查詢效率可能會因?yàn)槟銢]有選擇OR而降低.
        在下面的例子中, LOC_ID 和REGION上都建有索引.
高效:
        SELECT LOC_ID , LOC_DESC , REGION
        FROM LOCATION
        WHERE LOC_ID = 10
        UNION
        SELECT LOC_ID , LOC_DESC , REGION
        FROM LOCATION
        WHERE REGION = “MELBOURNE”
       
低效:
        SELECT LOC_ID , LOC_DESC , REGION
        FROM LOCATION
        WHERE LOC_ID = 10 OR REGION = “MELBOURNE”
        注意:
        WHERE KEY1 = 10 (返回最少記錄)
        OR KEY2 = 20 (返回最多記錄)
        ORACLE 內(nèi)部將以上轉(zhuǎn)換為
        WHERE KEY1 = 10 AND
        ((NOT KEY1 = 10) AND KEY2 = 20)
建議 如何刪除重復(fù)記錄
        高效的刪除重復(fù)記錄方法 (因?yàn)槭褂昧薘OWID)
        DELETE FROM EMP E
        WHERE E.ROWID > (SELECT MIN(X.ROWID)
        FROM EMP X
        WHERE X.EMP_NO = E.EMP_NO);
建議 用TRUNCATE替代DELETE全表
        當(dāng)刪除表中的所有記錄時(shí),如果不需要恢復(fù),建議使用TRUNCATE而不是DELETE ALL,既不占用回滾段,也能加快速度。
建議 多使用COMMIT
        在程序中盡量避免特大事務(wù),多使用COMMIT, 這樣程序的性能得到提高,也會因?yàn)镃OMMIT所釋放的資源而減少。
        當(dāng)然要注意,COMMIT次數(shù)也不能太頻繁,頻繁同樣會增加數(shù)據(jù)庫負(fù)擔(dān)。
建議 用Where子句替換HAVING子句
        避免使用HAVING子句, HAVING 只會在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾. 這個(gè)處理需要排序,總計(jì)等操作. 如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷.
        示例:
低效:
        SELECT REGION,AVG(LOG_SIZE)
        FROM LOCATION
        GROUP BY REGION
        HAVING REGION != ‘SYDNEY'
        AND REGION != ‘PERTH'
       
高效:
        SELECT REGION,AVG(LOG_SIZE)
        FROM LOCATION
        WHERE REGION != ‘SYDNEY'
        AND REGION != ‘PERTH'
        GROUP BY REGION
建議 用EXISTS替代IN
        在許多基于基礎(chǔ)表的查詢中,為了滿足一個(gè)條件,往往需要對另一個(gè)表進(jìn)行聯(lián)接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率.
        示例:
低效:
        SELECT *
        FROM EMP (基礎(chǔ)表)
        WHERE EMPNO > 0
        AND DEPTNO IN (SELECT DEPTNO
        FROM DEPT
        WHERE LOC = ‘MELB')
       
高效:
        SELECT *
        FROM EMP (基礎(chǔ)表)
        WHERE EMPNO > 0
        AND EXISTS (SELECT ‘X'
        FROM DEPT
        WHERE DEPT.DEPTNO = EMP.DEPTNO
        AND LOC = ‘MELB')
建議 用NOT EXISTS替代NOT IN
        無論在哪種情況下,NOT IN都是最低效的 (因?yàn)樗鼘ψ硬樵冎械谋韴?zhí)行了一個(gè)全表遍歷).可以把它改寫成外連接(Outer Joins)或NOT EXISTS.
        示例:
        SELECT …
        FROM EMP
        WHERE DEPT_NO NOT IN (SELECT DEPT_NO
        FROM DEPT
        WHERE DEPT_CAT='A');
(方法一: 高效)
        SELECT ….
        FROM EMP A,DEPT B
        WHERE A.DEPT_NO = B.DEPT(+)
        AND B.DEPT_NO IS NULL
        AND B.DEPT_CAT(+) = ‘A'
       
(方法二: 最高效)
        SELECT ….
        FROM EMP E
        WHERE NOT EXISTS (SELECT ‘X'
        FROM DEPT D
        WHERE D.DEPT_NO = E.DEPT_NO
        AND DEPT_CAT = ‘A');
建議 用表連接替換EXISTS
        通常來說 , 采用表連接的方式比EXISTS更有效率。
        SELECT ENAME
        FROM EMP E
        WHERE EXISTS (SELECT ‘X'
        FROM DEPT
        WHERE DEPT_NO = E.DEPT_NO
        AND DEPT_CAT = ‘A');
       
(更高效)
        SELECT ENAME
        FROM DEPT D,EMP E
        WHERE E.DEPT_NO = D.DEPT_NO
        AND DEPT_CAT = ‘A' ;
建議 用EXISTS替換DISTINCT
        當(dāng)提交一個(gè)包含一對多表信息(比如部門表和雇員表)的查詢時(shí),避免在SELECT子句中使用DISTINCT。一般可以考慮用EXIST替換。
        示例:
低效:
        SELECT DISTINCT DEPT_NO,DEPT_NAME
        FROM DEPT D,EMP E
        WHERE D.DEPT_NO = E.DEPT_NO
       
高效:
        SELECT DEPT_NO,DEPT_NAME
        FROM DEPT D
        WHERE EXISTS ( SELECT ‘X'
        FROM EMP E
        WHERE E.DEPT_NO = D.DEPT_NO);
建議避免在索引列上使用計(jì)算
        WHERE子句中,如果索引列參與計(jì)算,優(yōu)化器將不使用索引而使用全表掃描。
        示例:
低效:
        SELECT …
        FROM DEPT
        WHERE SAL * 12 > 25000;
       
高效:
        SELECT …
        FROM DEPT
        WHERE SAL > 25000/12;
建議 避免在索引列上使用NOT
        避免在索引列上使用NOT, NOT會產(chǎn)生在和在索引列上使用函數(shù)相同的影響. 當(dāng)ORACLE”遇到”NOT,會停止使用索引轉(zhuǎn)而執(zhí)行全表掃描。
        示例:
低效: (不使用索引)
        SELECT …
        FROM DEPT
        WHERE NOT DEPT_CODE = 0;
       
高效: (使用了索引)
        SELECT …
        FROM DEPT
        WHERE DEPT_CODE > 0;
       
        需要注意的是,在某些時(shí)候, ORACLE優(yōu)化器會自動(dòng)將NOT轉(zhuǎn)化成相對應(yīng)的關(guān)系操作符。
        NOT > to <=
        NOT >= to <
        NOT < to >=
        NOT <= to >
建議 用>=替代>
        如果DEPTNO上有一個(gè)索引,
       
高效:
        SELECT *
        FROM EMP
        WHERE DEPTNO >=4
       
低效:
        SELECT *
        FROM EMP
        WHERE DEPTNO >3

論壇徽章:
1
技術(shù)圖書徽章
日期:2014-07-11 16:30:58
55 [報(bào)告]
發(fā)表于 2012-02-17 22:15 |只看該作者
有時(shí)間在來。呵呵。

論壇徽章:
0
56 [報(bào)告]
發(fā)表于 2012-02-18 09:33 |只看該作者
看到大家的踴躍發(fā)言,很感動(dòng);籍此機(jī)會,希望給更多的閱讀者或多或少帶來一些火花般的啟迪。

大家提到的方方面面已經(jīng)很多很好了,在此只是還需要注意一些更大尺度的把握:
"雙刃性":許多事情或者措施,都是雙向的,依據(jù)經(jīng)驗(yàn)選擇一個(gè)好的平衡點(diǎn),才能達(dá)到收益最大化

(1) 比如樓上同仁提到的跟蹤內(nèi)存,如果只是打開Verbose GC尚好,的確會產(chǎn)生很多日志,不過日志量不會大到較嚴(yán)重影響系統(tǒng)的程度,比較常用;但要是上OptimizeIt和Jprobe,小馬拖大車的吭哧吭哧,的確會讓生產(chǎn)系統(tǒng)嚴(yán)重滯緩,慎用;

(2) 再比如同仁提到的NativeIO,打開的確會提高吞吐性能(要不以前的老名字怎么叫Perfemance Pack呢),但由于以共享庫的方式,通過JNI引入了C語言本地代碼,也是發(fā)生系統(tǒng)Core Dump的一大誘因,經(jīng)常需要上個(gè)補(bǔ)丁什么的;
    而且這里大家需要注意知其然并知其所以然,當(dāng)年設(shè)計(jì)開發(fā)時(shí)內(nèi)部討論引入NativeIO,最大的動(dòng)力,并不是因?yàn)樗^“C語言比Java快”,而是因?yàn)樵缒甑腏DK的Socket編程,只能支持到Send/Recv(),或者說Read/Write()這樣的同步接口;而異步Socket的大并發(fā)高容量的Select/Poll()機(jī)制API,C語言卻已成熟多年;引入異步IO,才是當(dāng)年的真正本意,F(xiàn)在新版JDK已經(jīng)很好的實(shí)現(xiàn)異步IO了,所以WeLogic的控制臺很多措辭其實(shí)都悄悄變了。

(3) 再比如同仁提到的集群(即Cluster),其實(shí)并不是每次請求來都輪詢(Round-Robin),或者根據(jù)機(jī)器負(fù)載來平衡;這種負(fù)載均衡,其實(shí)只對新請求如此,對于老請求(就是同一個(gè)瀏覽器端,已經(jīng)發(fā)過Http請求,而cookie或session尚未超期),其實(shí)是粘連(Sticky)的,即老往同一個(gè)機(jī)器上送,而不是自由分發(fā);其實(shí)大家看到WebLogic在SessionID中編碼了主地址和備地址,就能猜到。所以前面的分發(fā)器配合時(shí),不是越“均衡”越好,也需要粘連算法;


"魯棒性":一般而言,大型業(yè)務(wù)系統(tǒng)的穩(wěn)定性重于高效性;在修訂故障,引入?yún)?shù)或者調(diào)優(yōu)系統(tǒng)時(shí),需要充份考慮這點(diǎn)
"魯棒性"這個(gè)詞,相信大家在學(xué)校里《現(xiàn)代控制理論》中就早早接觸到了。比如我們國家的航天事業(yè)神舟飛船,如果火箭發(fā)射中,受大氣中的風(fēng)、云,氣流等稍微擾動(dòng)一下,那么高速飛行,如果沒有很強(qiáng)的抗干擾性或者說輸入收斂性,早就不知道偏哪里去了。另外,比如說Windows界面用起來再舒服,大家在服務(wù)器領(lǐng)域還是喜歡Unix;同樣是PC Server,跟愿意跑Linux,其實(shí)這里面至關(guān)重要的,也有個(gè)系統(tǒng)魯棒性的問題;Windows有點(diǎn)小操作不當(dāng),或者不兼容,框就彈出來了甚至藍(lán)屏了,各子系統(tǒng)耦合度高,整體系統(tǒng)非常脆弱而容易一個(gè)點(diǎn)觸發(fā)全線崩潰;Unix系統(tǒng)卻常常有一顆堅(jiān)實(shí)的"心",并不會因?yàn)橐恍⿷?yīng)用程序的錯(cuò)誤或子系統(tǒng)故障而全線崩潰。(從這里,其實(shí)也多少能看到當(dāng)年貝爾實(shí)驗(yàn)室人員的扎實(shí)理論功底)。

那么我們在調(diào)整中間件系統(tǒng)時(shí),也需要注意對全局的影響;一旦故障發(fā)生,我們的設(shè)置,是讓其收斂的,還是擴(kuò)散的。

(1) 比如同仁提到的,用ipcrm清理Tuxedo殘余,其實(shí)實(shí)踐中很好;因?yàn)镮PC資源在Tuxedo中大量使用(每個(gè)Server都有消息隊(duì)列;WSL/WSH,以及BBL和Serve間有共享內(nèi)存,還有大量的信號量等等),如果有什么IPC資源混亂,最終導(dǎo)致BBL鎖住,這種錯(cuò)誤就會災(zāi)難性的擴(kuò)散到整個(gè)全局,導(dǎo)致全程堵塞也不是不可能;

(2) 再比如有同仁提到的新執(zhí)行隊(duì)列,現(xiàn)在應(yīng)該叫Work Manager了,也是一個(gè)很好的實(shí)踐;如果大家共用一個(gè)大線程池的話,一種業(yè)務(wù)卡殼,然后前端人員通常就會不斷關(guān)閉重開窗口刷,然后線程池就被占滿并開始暴漲,并逐漸內(nèi)存等各資源吃緊,然后所有業(yè)務(wù)都開始不太靈光了。

等等。。。

論壇徽章:
0
57 [報(bào)告]
發(fā)表于 2012-02-18 09:41 |只看該作者
本帖最后由 三人行必有吾師 于 2012-02-18 12:05 編輯

對了,現(xiàn)在這三本書已經(jīng)全線上架了,比如WebLogic這本書,在各大圖書網(wǎng)站輸入"WebLogic",加“運(yùn)維”或者“實(shí)戰(zhàn)”關(guān)鍵詞,都能找出來

由此給大家曾經(jīng)帶來的不便,表示歉意!

論壇徽章:
0
58 [報(bào)告]
發(fā)表于 2012-02-18 10:32 |只看該作者
本帖最后由 vsyour 于 2012-02-18 10:36 編輯

視內(nèi)存大小而定對JVM進(jìn)行調(diào)優(yōu)
  1. if [ "${together}" = "MNAOM" ];then   
  2.             nohup $JRE_HOME/bin/java -Duser.timezone=UTC -server -Xms256m -Xmx1024m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=512m -cp $JAVACP ${SPGPROC_ID} $BOARD_FRAME $BOARD_SLOT>/dev/null 2>&1 &
  3.         elif [ "${together}" = "SPSPG" ]; then
  4.             nohup $JRE_HOME/bin/java -Duser.timezone=UTC -server -Xms256m -Xmx2048m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=512m -cp $JAVACP ${SPGPROC_ID} $BOARD_FRAME $BOARD_SLOT>/dev/null 2>&1 &
  5.         else
  6.             echo "Only base board can excute."
  7.             rm $FLAG_STARTING_FILE >> $LOGFILE
  8.             exit 1;
  9.         fi
復(fù)制代碼

論壇徽章:
0
59 [報(bào)告]
發(fā)表于 2012-02-18 20:35 來自手機(jī) |只看該作者
精華帖呀,贊!!

論壇徽章:
0
60 [報(bào)告]
發(fā)表于 2012-02-18 21:20 |只看該作者
WebLogic有安裝配置部署的經(jīng)歷,并有項(xiàng)目中實(shí)施配置集群的經(jīng)歷。
借寶地,我想向給位高手請教,配置WEBLOGIC兩個(gè)節(jié)點(diǎn)集群的時(shí)候,poxy_server一定需要配置嗎?poxy_server是配置在其中的一個(gè)節(jié)點(diǎn)上,并不加入集群。在實(shí)施過程中,配置了poxy_server,如果關(guān)閉了poxy_server,就無法訪問。那么如果配置poxy_server的節(jié)點(diǎn)宕機(jī)了,那么是不是集群就無法發(fā)揮作用呢?是否是配置方法出了問題。還有weblogic集群配合F5實(shí)現(xiàn)負(fù)載均衡,能實(shí)現(xiàn)嗎?當(dāng)時(shí)我們只有干掉集群,配置單節(jié)點(diǎn)的DOMAIN,再通過F5虛擬地址實(shí)現(xiàn)訪問?還有其他更好的方法嗎?小弟,在這里致謝了先!
GoldenGate有基本了解,通過了ORACLE認(rèn)證,尚無實(shí)施經(jīng)歷,希望有熟悉的朋友分享資料。謝謝了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP