聲明:這是網(wǎng)上找到的 項(xiàng)目一:交通銀行全國(guó)大集中IBP(國(guó)際業(yè)務(wù)系統(tǒng))項(xiàng)目
項(xiàng)目簡(jiǎn)介(功能與用途): 交通銀行自從2002年開(kāi)始做全國(guó)的數(shù)據(jù)大集中,其中IBP(國(guó)際業(yè)務(wù)系統(tǒng))項(xiàng)目,是實(shí)現(xiàn)交行國(guó)際業(yè)務(wù)中現(xiàn)有的國(guó)際結(jié)算、貿(mào)易融資,外匯管理、以及外匯資金管理服務(wù),覆蓋現(xiàn)有的進(jìn)口,出口,匯款、融資及頭寸管理等主要功能,提供總分行各種參數(shù)管理,公共控制、公共信息管理、公共業(yè)務(wù)和打印、查詢、報(bào)表等輔助服務(wù),同時(shí),IBP系統(tǒng)還提供與大集中核心帳務(wù)系統(tǒng)(簡(jiǎn)稱IBS),大集中信貸管理系統(tǒng)(簡(jiǎn)稱CMIS)、環(huán)球同業(yè)銀行金融電訊協(xié)會(huì)(簡(jiǎn)稱SWIFT),以及外匯管理系統(tǒng)的連接。是整個(gè)大集中業(yè)務(wù)邏輯比較復(fù)雜和技術(shù)難度比較高的項(xiàng)目,該項(xiàng)目一期由神州數(shù)碼公司負(fù)責(zé)程序編碼。 項(xiàng)目難點(diǎn)與解決方案: 交通銀行IBP(國(guó)際業(yè)務(wù)系統(tǒng))是國(guó)內(nèi)首個(gè)基于J2EE架構(gòu)純java的國(guó)際結(jié)算系統(tǒng)。后臺(tái)數(shù)據(jù)庫(kù)為DB2數(shù)據(jù)庫(kù),中間件為Websphere,MQ,運(yùn)行在IBM AIX操作系統(tǒng)上,IBP系統(tǒng)采用Browser/Server應(yīng)用系統(tǒng)架構(gòu),利用主流的中間件(Websphere,MQ)系統(tǒng)來(lái)接管通訊和交易調(diào)度,以達(dá)到交易調(diào)度的平臺(tái)化。 該項(xiàng)目的難點(diǎn)主要由以下幾點(diǎn): 1, 由于IBP數(shù)據(jù)庫(kù)表結(jié)構(gòu)非常復(fù)雜(很多表有幾百個(gè)字段),而且總行數(shù)據(jù)大集中后,數(shù)據(jù)量非常大,所以項(xiàng)目前期合理的數(shù)據(jù)庫(kù)的物理設(shè)計(jì)和后期的性能調(diào)優(yōu)就非常重要。 2, 由于國(guó)際業(yè)務(wù)系統(tǒng)采用報(bào)文傳輸,而且報(bào)文的長(zhǎng)度非常大,所以數(shù)據(jù)庫(kù)中傳統(tǒng)的varchar和long varchar數(shù)據(jù)類型無(wú)法滿足業(yè)務(wù)邏輯需求,所以數(shù)據(jù)庫(kù)中使用大量大對(duì)象(BLOB,CLOB,DBCLOB)數(shù)據(jù)類型,由于數(shù)據(jù)庫(kù)對(duì)大對(duì)象類型的訪問(wèn)無(wú)法通過(guò)內(nèi)存,所以大對(duì)象類型的存在直接對(duì)數(shù)據(jù)訪問(wèn)的性能產(chǎn)生影響。 3, 由于并發(fā)用戶非常多,所以在壓力測(cè)試期間,數(shù)據(jù)庫(kù)中有大量鎖等待(lock wait)和死鎖(deadlock)和鎖升級(jí)現(xiàn)象產(chǎn)生,直接影響交易并發(fā)。 4, 應(yīng)用中部分SQL語(yǔ)句比較復(fù)雜,而且SQL語(yǔ)句的寫法和謂詞等方面使用不當(dāng),直接造成低效率的SQL運(yùn)行,占用系統(tǒng)I/O和內(nèi)存。 5, 數(shù)據(jù)庫(kù)中索引構(gòu)建不合理,存在很多冗余的無(wú)用索引,很多應(yīng)該創(chuàng)建的合理的索引沒(méi)有構(gòu)建。 6, 用戶希望把個(gè)別頻繁訪問(wèn)的小表放在內(nèi)存中長(zhǎng)時(shí)間運(yùn)行,如何解決這個(gè)技術(shù)難題。 7, 如何把應(yīng)用(J2EE),中間件(Websphere,MQ),數(shù)據(jù)庫(kù)(DB2),操作系統(tǒng)(AIX)能全局的調(diào)優(yōu),不至于在某個(gè)環(huán)節(jié)造成全局的瓶頸。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 1,在數(shù)據(jù)庫(kù)的設(shè)計(jì)中,采用DB2中的DMS表空間,分別把表中的索引(index),常規(guī)數(shù)據(jù)(data)和大對(duì)象(BLOB,CLOB,DBCLOB)分割存放在不同的DMS表空間中,并且把DMS表空間放在IBM ESS存儲(chǔ)的裸設(shè)備(raw device)上,這樣大大提高了讀寫(I/O)的并行訪問(wèn),優(yōu)化了數(shù)據(jù)訪問(wèn)的速度;另外在緩沖池的設(shè)計(jì)上,創(chuàng)建了多個(gè)緩沖池,分別為索引表空間,數(shù)據(jù)表空間指定各自的緩沖池,這樣可以使它們減少對(duì)一個(gè)大緩沖池的競(jìng)爭(zhēng),從而減少交換(swapping)操作,提高從緩沖池命中率(hit ratio),提高訪問(wèn)速度。下面是部分?jǐn)?shù)據(jù)庫(kù)設(shè)計(jì)的腳本: 緩沖池: IBMDEFAULTBP 1000 DATA_DMS_4K_BP 128000 INDEX_DMS_4K_BP 76800 INDEX_DMS_8K_BP 12800 BP_DMS_32K_BP 1000 DATA_DMS_8K_BP 25600 BIGTAB_DATA_4K_BP 25600 BIGTAB_INDEX_4K_BP 25600 WFW_DATA_4K_BP 12800 WFW_INDEX_4K_BP 12800 表空間: Name = SYSCATSPACE Name = TEMPSPACE1 Name = USERSPACE1 Name = LOB_DMS_8K Name = DATA_DMS_8K Name = LOB_DMS_4K Name = DATA_DMS_4K Name = INDEX_DMS_4K Name = INDEX_DMS_8K Name = BIGTAB_DATA_DMS Name = BIGTAB_INDEX_DMS Name = WFW_DATA_DMS Name = WFW_INDEX_DMS Name = BPBD_DMS_32K Name = BPBD_32K_SYS_TMP Name = BPBD_8K_SYS_TMP 同時(shí),由于數(shù)據(jù)庫(kù)中存在大量連接(join),分組(group by),排序(sort)操作,所以為了提高這些操作的速度,對(duì)系統(tǒng)臨時(shí)表空間所在的文件系統(tǒng)預(yù)留了大量文件系統(tǒng)空間。 2,在最初的數(shù)據(jù)庫(kù)物理設(shè)計(jì)中,數(shù)據(jù)庫(kù)中共有238個(gè)大對(duì)象的字段,這個(gè)大對(duì)象類型的存在,對(duì)系統(tǒng)的性能和I/O讀寫直接帶來(lái)性能的低下,為了減少這些大字段,和業(yè)務(wù)人員詳細(xì)了解了業(yè)務(wù)需求,避免了無(wú)必要的加大大對(duì)象的長(zhǎng)度,考慮把有些大對(duì)象用varchar代替(例如:原來(lái)長(zhǎng)度為8000字節(jié)的大對(duì)象用兩個(gè)長(zhǎng)度為varchar(4000)的字段代替,最后對(duì)這兩個(gè)字段再做concat的字符合并操作),經(jīng)過(guò)詳細(xì)了解和間接的采用一些技術(shù)替代大對(duì)象后,最后數(shù)據(jù)庫(kù)中只有35個(gè)對(duì)象,大對(duì)象的減少直接帶來(lái)了I/O訪問(wèn)速度的提高。 3,系統(tǒng)在上線投產(chǎn)前期進(jìn)行壓力測(cè)試期間,數(shù)據(jù)庫(kù)中有大量死鎖和鎖等待出現(xiàn),為了解決上述問(wèn)題,首先,需要加大相關(guān)數(shù)據(jù)庫(kù)中有關(guān)鎖的參數(shù)(locklist,maxlocks,locktimeout和dlchktime)等數(shù)據(jù)庫(kù)配置參數(shù);其次,為了讓鎖的快速釋放不至于引起交易阻塞,就需要我們?cè)诒砩蟿?chuàng)建合理的索引。所以,造成引起鎖等待的應(yīng)用程序和SQL語(yǔ)句,對(duì)這樣應(yīng)用和SQL進(jìn)行合理的構(gòu)建索引。 4,應(yīng)用開(kāi)發(fā)中的很多SQL語(yǔ)句運(yùn)行效率低下,這些SQL語(yǔ)句在寫法和謂詞使用存在很多問(wèn)題,例如:大量使用select *,select count(*),使用not in,not exist,使用函數(shù)等,對(duì)于這些問(wèn)題,需要對(duì)開(kāi)發(fā)人員詳細(xì)解釋如何高效的使用SQL,所以給相關(guān)開(kāi)發(fā)人員專門講解三天的SQL使用和如何編寫高效的SQL。 5,應(yīng)用開(kāi)發(fā)人員往往憑借自己對(duì)業(yè)務(wù)的理解在表上建立了很多索引,結(jié)果是這些索引在SQL執(zhí)行期間根本沒(méi)有使用,這些冗余索引的存在直接導(dǎo)致了空間存儲(chǔ)的浪費(fèi)和對(duì)插入(insert)操作的影響;所以,正確的做法是我們應(yīng)該正確的分析該表的讀寫情況,分析表中SQL語(yǔ)句執(zhí)行的頻率,對(duì)每一條SQL語(yǔ)句做解釋(explain)從而來(lái)評(píng)估為該表創(chuàng)建最合理的索引。 6,使用緩存(cache)表來(lái)解決上述問(wèn)題,該特性是DB2數(shù)據(jù)庫(kù)新增加的一個(gè)特性,要能夠合理的把數(shù)據(jù)庫(kù)最新的最先進(jìn)的技術(shù)運(yùn)用到我們的數(shù)據(jù)庫(kù)設(shè)計(jì)中。 7,調(diào)整操作系統(tǒng)交換空間(page space),內(nèi)核參數(shù);調(diào)整數(shù)據(jù)庫(kù)配置參數(shù);合理的設(shè)置websphere的相關(guān)和數(shù)據(jù)庫(kù)的接口配置,調(diào)整應(yīng)用性能;最后用壓力測(cè)試軟件來(lái)找出引起性能的瓶頸并解決各個(gè)層面的瓶頸。 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: IBP項(xiàng)目已經(jīng)在2004.7.14日杭州第一家正式上線,上線近兩年來(lái),系統(tǒng)非常穩(wěn)定和高效的運(yùn)行,IBP項(xiàng)目的成功經(jīng)驗(yàn)有以下幾點(diǎn): 1, 數(shù)據(jù)庫(kù)前期的合理的架構(gòu)設(shè)計(jì)(物理設(shè)計(jì)和邏輯設(shè)計(jì))是整個(gè)項(xiàng)目成敗的關(guān)鍵,合理的架構(gòu)設(shè)計(jì)為整個(gè)項(xiàng)目穩(wěn)定可靠高效運(yùn)行打下了良好的基礎(chǔ),同時(shí)也起到了事半功倍的作用。 2, 根據(jù)系統(tǒng)的物理資源,對(duì)數(shù)據(jù)庫(kù)的配置參數(shù)做合理的調(diào)整,保證系統(tǒng)物理資源(CPU,I/O,內(nèi)存和網(wǎng)絡(luò))和邏輯資源(裸設(shè)備,文件系統(tǒng)等)合理的分布和應(yīng)用。 3, 在應(yīng)用層,要保證編程人員編寫高效的SQL,通過(guò)對(duì)相關(guān)編程人員專門的進(jìn)行SQL培訓(xùn),培養(yǎng)他們養(yǎng)成良好的編寫高效SQL的習(xí)慣;對(duì)編程人員講解SQL執(zhí)行的原理和步驟,教會(huì)他們?nèi)绾问褂孟嚓P(guān)解釋工具(explain)來(lái)對(duì)SQL進(jìn)行分析解釋從而來(lái)選擇最合理的執(zhí)行計(jì)劃(access plan)。 4, 要學(xué)會(huì)充分運(yùn)用數(shù)據(jù)庫(kù)中最新的數(shù)據(jù)庫(kù)技術(shù)運(yùn)用到實(shí)際的編程應(yīng)用中(例如:DB2 V8中的緩存表等技術(shù))。 5, 要結(jié)合不同的數(shù)據(jù)庫(kù)產(chǎn)品,在保證業(yè)務(wù)邏輯允許的情況下,使用合理的隔離級(jí)別(例如:UR隔離級(jí)別)來(lái)最大程度上提高數(shù)據(jù)庫(kù)的并發(fā)。 6, 對(duì)數(shù)據(jù)庫(kù)創(chuàng)建最合理的索引(太多,影響insert速度,浪費(fèi)存儲(chǔ);太少,不能顯著提高查詢速度),盡量的多創(chuàng)建復(fù)合索引和包含(include)索引。 你在項(xiàng)目中崗位與貢獻(xiàn): 負(fù)責(zé)完成交通銀行IBP國(guó)際業(yè)務(wù)系統(tǒng)的整體數(shù)據(jù)庫(kù)物理設(shè)計(jì)和邏輯設(shè)計(jì);負(fù)責(zé)完成數(shù)據(jù)庫(kù)后期的性能監(jiān)控,性能調(diào)優(yōu);負(fù)責(zé)培訓(xùn)編程人員如何編寫高效的SQL,從而使整體應(yīng)用運(yùn)行效率提高;負(fù)責(zé)構(gòu)建數(shù)據(jù)庫(kù)的索引并刪除冗余的索引;負(fù)責(zé)制定IBP項(xiàng)目的備份和恢復(fù)策略;負(fù)責(zé)制定IBP項(xiàng)目的安全策略;負(fù)責(zé)培訓(xùn)交通銀行全國(guó)各分行技術(shù)人員。 項(xiàng)目二:梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)項(xiàng)目 項(xiàng)目簡(jiǎn)介(功能與用途): 梅州農(nóng)村信用社綜合業(yè)務(wù)系統(tǒng)是梅州農(nóng)信投資2000多萬(wàn)實(shí)施的一個(gè)電子商務(wù)系統(tǒng),梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)的實(shí)施,將實(shí)現(xiàn)梅州農(nóng)信現(xiàn)有業(yè)務(wù)的電子化網(wǎng)絡(luò)聯(lián)接,并把梅州農(nóng)信的綜合業(yè)務(wù)系統(tǒng)建成為梅州銀行業(yè)領(lǐng)先的綜合業(yè)務(wù)系統(tǒng),為提高梅州農(nóng)信的競(jìng)爭(zhēng)能力和業(yè)務(wù)經(jīng)營(yíng)決策及科學(xué)管理的水平做出積極貢獻(xiàn),并能夠利用信息技術(shù)為客戶提供金融服務(wù)和帳務(wù)管理,盡快實(shí)現(xiàn)網(wǎng)絡(luò)綜合業(yè)務(wù)系統(tǒng)。 項(xiàng)目難點(diǎn)與解決方案: 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)為DB2數(shù)據(jù)庫(kù),前臺(tái)應(yīng)用采用java開(kāi)發(fā),運(yùn)行在IBM AIX操作系統(tǒng)上。 該項(xiàng)目的難點(diǎn)和存在的問(wèn)題主要由以下幾點(diǎn): 1, 由于國(guó)內(nèi)的銀行核心業(yè)務(wù)系統(tǒng)后臺(tái)核心大多采用c或c++開(kāi)發(fā),而梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)后臺(tái)采用java開(kāi)發(fā),而java應(yīng)用開(kāi)發(fā)不太適合做銀行后臺(tái)的核心交易處理,而且java比較占用內(nèi)存資源,所以該項(xiàng)目難點(diǎn)是在整體架構(gòu)設(shè)計(jì)不能改變的情況下,注定了后續(xù)的工作只能是“打補(bǔ)丁”的工作。 2, 數(shù)據(jù)庫(kù)架構(gòu)不合理,數(shù)據(jù)庫(kù)的物理設(shè)計(jì)和邏輯設(shè)計(jì)不合理,需要做數(shù)據(jù)遷移。 3, 數(shù)據(jù)庫(kù)做并發(fā)交易非常慢。 4, 數(shù)據(jù)庫(kù)裝載數(shù)據(jù)和數(shù)據(jù)移植慢。 5, 晚上做批處理的處理時(shí)間太長(zhǎng)。 6, 報(bào)表查詢時(shí)間太長(zhǎng),無(wú)法滿足實(shí)際業(yè)務(wù)需求。 7, 數(shù)據(jù)庫(kù)安全規(guī)劃不合理,存在安全隱患。 8, 數(shù)據(jù)庫(kù)備份和恢復(fù)策略不合理。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 1, 由于前臺(tái)應(yīng)用采用java開(kāi)發(fā),java應(yīng)用開(kāi)發(fā)不太適合做銀行后臺(tái)的核心交易處理,而且java比較占用內(nèi)存資源,針對(duì)java比較占用內(nèi)存資源的情況,需要對(duì)應(yīng)用作出優(yōu)化,尤其需要在應(yīng)用中對(duì)java的內(nèi)存使用進(jìn)行垃圾回收。 2, 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)不合理,數(shù)據(jù)庫(kù)設(shè)計(jì)采用了SMS表空間,而且表中索引,常規(guī)數(shù)據(jù)和大對(duì)象數(shù)據(jù)沒(méi)有分割存放;SMS表空間采用目錄方式訪問(wèn),并且使用大量操作系統(tǒng)調(diào)用(system call),讀寫效率低下。所以為了保證數(shù)據(jù)庫(kù)高性能并發(fā)I/O,需要對(duì)原有的數(shù)據(jù)庫(kù)進(jìn)行重新物理架構(gòu)設(shè)計(jì)并對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行數(shù)據(jù)遷移。 3, 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)在上線初期,數(shù)據(jù)庫(kù)的并發(fā)非常慢,數(shù)據(jù)庫(kù)中經(jīng)常存在鎖表的現(xiàn)象,有大量的死鎖(deadlock),鎖等待(lock wait)和鎖升級(jí)(lock escation)出現(xiàn),為了解決這些問(wèn)題,采用了如下解決方案:一是首先調(diào)整數(shù)據(jù)庫(kù)中和鎖相關(guān)的配置參數(shù)(locklist,maxlocks,dlchktime)等參數(shù),其次是找出系統(tǒng)是哪些應(yīng)用和SQL長(zhǎng)時(shí)間的持有鎖,對(duì)這些應(yīng)用和SQL作出調(diào)整。 4, 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)在上線初期,需要對(duì)以往的歷史數(shù)據(jù)進(jìn)行移植和裝載到新的數(shù)據(jù)庫(kù)中,在初期他們采用了import方式來(lái)進(jìn)行數(shù)據(jù)移植和裝載數(shù)據(jù);在DB2數(shù)據(jù)庫(kù)中有import和load兩種數(shù)據(jù)入庫(kù)方式,import的方式是非常慢的,所以采用import方式根本無(wú)法定期按時(shí)上線。為此,重新用load編寫移植腳本,這樣保證了系統(tǒng)定期按時(shí)上線。所以,一定要采用數(shù)據(jù)庫(kù)中最合理的技術(shù)來(lái)進(jìn)行相應(yīng)的操作。 5, 系統(tǒng)在上線初期,每天晚上做批處理的時(shí)間特別長(zhǎng)(大概7個(gè)小時(shí))左右,這是不合理的,對(duì)批處理進(jìn)行監(jiān)控發(fā)現(xiàn)批處理中存在很多對(duì)數(shù)據(jù)庫(kù)的大表的delete操作;指導(dǎo)應(yīng)用開(kāi)發(fā)人員在開(kāi)發(fā)中用load的API函數(shù)來(lái)代替delete,因?yàn)橹苯觗elete會(huì)產(chǎn)生很多日志和鎖,刪除速度慢并且容易出現(xiàn)表的“碎片”。經(jīng)過(guò)上述調(diào)整后,批處理時(shí)間減少為3小時(shí)左右。 6, 在每天晚上的報(bào)表處理時(shí)候,報(bào)表處理速度非常慢,往往處理一張報(bào)表需要幾個(gè)小時(shí),經(jīng)過(guò)分析發(fā)現(xiàn)報(bào)表的SQL語(yǔ)句非常復(fù)雜,這些SQL語(yǔ)句一是沒(méi)有經(jīng)過(guò)調(diào)優(yōu),運(yùn)行效率低下;二是對(duì)這條復(fù)雜的SQL語(yǔ)句沒(méi)有創(chuàng)建最合理的索引。經(jīng)過(guò)調(diào)優(yōu)SQL和創(chuàng)建索引后,報(bào)表的速度減少為幾分鐘。 7, 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)上線后,數(shù)據(jù)庫(kù)安全和操作系統(tǒng)安全都是缺省的設(shè)置,沒(méi)有經(jīng)過(guò)合理的安全規(guī)劃,存在嚴(yán)重的安全隱患。為此,對(duì)相關(guān)用戶進(jìn)行角色劃分并進(jìn)行合理的權(quán)限分配,同時(shí)對(duì)每一個(gè)用戶進(jìn)行安全的審查(audit)工作,這樣保證了系統(tǒng)安全可靠的運(yùn)行。 8, 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)上線后,數(shù)據(jù)庫(kù)沒(méi)有一個(gè)很好的安全和備份策略,這樣存在很大的數(shù)據(jù)丟失風(fēng)險(xiǎn)。根據(jù)梅州農(nóng)信數(shù)據(jù)庫(kù)特點(diǎn),編寫相關(guān)腳本,每天晚上對(duì)數(shù)據(jù)庫(kù)做批前備份和批后備份,并把備份好的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)日志tar到IBM 3583帶庫(kù)中并定期做恢復(fù)的模擬演練。 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: 梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)從2002年開(kāi)始實(shí)施到2003年系統(tǒng)上線,系統(tǒng)雖然現(xiàn)在穩(wěn)定的運(yùn)行,不過(guò)項(xiàng)目中出現(xiàn)的一些問(wèn)題還是值得后續(xù)項(xiàng)目深思的。 1.業(yè)務(wù)系統(tǒng)前期的選型和架構(gòu)設(shè)計(jì)是非常關(guān)鍵的,這是一個(gè)方向性的問(wèn)題,成功的選型和架構(gòu)設(shè)計(jì)是成功的一半,由于梅州農(nóng)信選用了java平臺(tái),而java應(yīng)用開(kāi)發(fā)不太適合銀行業(yè)務(wù)系統(tǒng)后臺(tái)核心帳務(wù)處理,這直接導(dǎo)致了運(yùn)行效率的低下和對(duì)資源的消耗,如果前期他們有一個(gè)很好的高級(jí)數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)工程師也許可以避免這些問(wèn)題的出現(xiàn)。 2.應(yīng)用編程人員需要對(duì)業(yè)務(wù)需求有詳細(xì)的了解,應(yīng)該充分做好前期的業(yè)務(wù)需求分析,在梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)中經(jīng)常出現(xiàn)很多由于前期業(yè)務(wù)需求沒(méi)有做好而導(dǎo)致后期重新“返工”現(xiàn)象,這直接影響了項(xiàng)目的按時(shí)上線。所以,編程人員和數(shù)據(jù)庫(kù)工程師需要對(duì)企業(yè)的業(yè)務(wù)需求有更詳盡的了解和分析。 3.需要一個(gè)全面數(shù)據(jù)庫(kù)人才來(lái)做數(shù)據(jù)庫(kù)的物理設(shè)計(jì)和邏輯設(shè)計(jì),梅州農(nóng)信由于前期數(shù)據(jù)庫(kù)物理設(shè)計(jì)和邏輯設(shè)計(jì)不合理,導(dǎo)致系統(tǒng)未能充分的利用物理資源和邏輯資源,所以后期需要對(duì)數(shù)據(jù)庫(kù)重新做架構(gòu)設(shè)計(jì),而這些需要做數(shù)據(jù)遷移,這無(wú)疑增加了系統(tǒng)的風(fēng)險(xiǎn)性。 4.由于前期的架構(gòu)設(shè)計(jì)和選型不當(dāng),直接導(dǎo)致了后續(xù)的工作只能是“打補(bǔ)丁”的工作,這些導(dǎo)致了后續(xù)項(xiàng)目的被動(dòng)性以及和其它銀行系統(tǒng)和新上線系統(tǒng)的兼容性。 5.應(yīng)該為企業(yè)信息系統(tǒng)制定合理的安全規(guī)范以消除潛在的安全隱患。 6.需要為企業(yè)的信息系統(tǒng)制定一個(gè)合理的備份恢復(fù)和災(zāi)備策略。 你在項(xiàng)目中崗位與貢獻(xiàn): 由于梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)的前期我并沒(méi)有參加,所以在整個(gè)項(xiàng)目的后期出項(xiàng)性能問(wèn)題的時(shí)候,我主要在現(xiàn)在的架構(gòu)和選型上保證業(yè)務(wù)系統(tǒng)能夠安全,可靠,穩(wěn)定的運(yùn)行。主要負(fù)責(zé)完成梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)歷史數(shù)據(jù)移植;負(fù)責(zé)完成梅州農(nóng)信綜合業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)性能監(jiān)控,性能調(diào)優(yōu);負(fù)責(zé)制定梅州農(nóng)信數(shù)據(jù)庫(kù)安全策略;負(fù)責(zé)制定信息系統(tǒng)的備份和恢復(fù)策略,負(fù)責(zé)制定信息系統(tǒng)的異地災(zāi)難備份策略;負(fù)責(zé)完成原有的數(shù)據(jù)庫(kù)的重新物理設(shè)計(jì)和數(shù)據(jù)遷移工作;負(fù)責(zé)指導(dǎo)編程人員編寫高效的SQL;負(fù)責(zé)構(gòu)建數(shù)據(jù)庫(kù)的索引并刪除冗余的索引。 項(xiàng)目三:湖南移動(dòng)業(yè)務(wù)運(yùn)營(yíng)支撐(BOSS)系統(tǒng) 項(xiàng)目簡(jiǎn)介(功能與用途): 湖南移動(dòng)通信公司業(yè)務(wù)運(yùn)營(yíng)支持系統(tǒng)(BOSS SYSTEM)系統(tǒng)是整合營(yíng)業(yè)、計(jì)費(fèi)、結(jié)算、賬務(wù)、收費(fèi)等業(yè)務(wù),實(shí)現(xiàn)”以客戶為中心、業(yè)務(wù)的開(kāi)發(fā)和管理面向客戶、網(wǎng)絡(luò)管理面向業(yè)務(wù)”的運(yùn)營(yíng)原則,大大提高企業(yè)的營(yíng)銷和服務(wù)水平的核心業(yè)務(wù)支撐系統(tǒng)。 項(xiàng)目難點(diǎn)與解決方案: BOSS系統(tǒng)從2003年初開(kāi)始陸續(xù)上線,營(yíng)帳系統(tǒng)在上線運(yùn)行后出現(xiàn)性能問(wèn)題。主要表現(xiàn)在對(duì)最終用戶的交互響應(yīng)不如預(yù)期,尤其在業(yè)務(wù)繁忙時(shí)更是無(wú)法得到及時(shí)的交互響應(yīng)。從主機(jī)(AIX)系統(tǒng)上觀察,主要表現(xiàn)在系統(tǒng)的I/O等待較大。營(yíng)帳系統(tǒng)是由業(yè)務(wù)應(yīng)用程序,Oracle數(shù)據(jù)庫(kù),AIX主機(jī),IBM ESS存儲(chǔ)多個(gè)部分組成,因此性能瓶頸的定位和性能的優(yōu)化都比較復(fù)雜。 該項(xiàng)目的難點(diǎn)主要由以下幾點(diǎn): 1,湖南移動(dòng)通信BOSS SYSTEM系統(tǒng)是一個(gè)大型的復(fù)雜系統(tǒng)。在這個(gè)系統(tǒng)中從上至下包括以下幾個(gè)層次:應(yīng)用程序、數(shù)據(jù)庫(kù)、主機(jī)系統(tǒng)(操作系統(tǒng))、SAN網(wǎng)絡(luò)和ESS存儲(chǔ)系統(tǒng)。在發(fā)生系統(tǒng)的性能問(wèn)題時(shí),性能問(wèn)題的定位和調(diào)優(yōu)就很復(fù)雜。 2,數(shù)據(jù)庫(kù)容量大,整個(gè)數(shù)據(jù)容量有約2120GB,整個(gè)數(shù)據(jù)的遷移需要幾十個(gè)小時(shí)的時(shí)間,而在生產(chǎn)系統(tǒng)上是不允許有很長(zhǎng)的停機(jī)時(shí)間進(jìn)行數(shù)據(jù)遷移。 3,湖南移動(dòng)BOSS系統(tǒng)是7×24的應(yīng)用,不允許停機(jī)。 4,應(yīng)用中部分SQL語(yǔ)句非常復(fù)雜,而且SQL語(yǔ)句的寫法和謂詞等方面使用不當(dāng),直接造成低效率的SQL運(yùn)行,占用系統(tǒng)I/O和內(nèi)存,需要找出這些SQL語(yǔ)句并對(duì)之進(jìn)行調(diào)整。 5,需要對(duì)Oracle數(shù)據(jù)庫(kù)部分參數(shù)作出調(diào)整。 6,需要對(duì)操作系統(tǒng)內(nèi)核參數(shù)作出調(diào)整。 7,需要對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)在ESS存儲(chǔ)上的物理分布重新調(diào)整。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 1,針對(duì)湖南移動(dòng)BOSS SYSTEM系統(tǒng)出現(xiàn)的性能問(wèn)題,根據(jù)湖南移動(dòng)BOSS SYSTEM系統(tǒng)的實(shí)際應(yīng)用, 借助ESS Expert和Precise等性能監(jiān)測(cè)工具軟件,對(duì)主機(jī)系統(tǒng)和存儲(chǔ)進(jìn)行了監(jiān)控,調(diào)整和優(yōu)化,同時(shí)對(duì)Oracle數(shù)據(jù)庫(kù)和應(yīng)用系統(tǒng)提出調(diào)優(yōu)建議。 項(xiàng)目分為以下幾個(gè)階段: · 檢查BOSS SYSTEM系統(tǒng)中所有硬件系統(tǒng),特別是SAN網(wǎng)絡(luò)中的硬件。 · 檢查SAN交換機(jī)的數(shù)據(jù)流量,觀察是否有通道流量不對(duì)稱、數(shù)據(jù)包丟失或數(shù)據(jù)傳輸過(guò)程中有效驗(yàn)錯(cuò)的問(wèn)題。 · 分析ESS上的數(shù)據(jù)分布,安裝和配置ESS Expert監(jiān)測(cè)軟件,觀察是否存在有FC通道、cluster、SSA卡或SSA loop負(fù)載不平均的現(xiàn)象。 · 檢查并優(yōu)化主機(jī)系統(tǒng)上AIX運(yùn)行的參數(shù),使之適合SYSTEM系統(tǒng)的運(yùn)行。 · 安裝和配置Precise Indepth for Oracle軟件,檢查ORACLE數(shù)據(jù)庫(kù)的參數(shù)設(shè)置,確定最影響性能的應(yīng)用程序,協(xié)助軟件開(kāi)發(fā)商優(yōu)化應(yīng)用程序。 · 兩次調(diào)整在ESS存儲(chǔ)系統(tǒng)上的數(shù)據(jù)分布,并通過(guò)StorWatch EXPERT軟件監(jiān)測(cè)ESS存儲(chǔ)系統(tǒng)的性能表現(xiàn); · 利用Precise軟件監(jiān)測(cè)數(shù)據(jù)庫(kù)和應(yīng)用對(duì)系統(tǒng)資源的占用,對(duì)主機(jī)系統(tǒng)作進(jìn)一步的調(diào)優(yōu),并提出對(duì)Oracle 數(shù)據(jù)庫(kù)和應(yīng)用程序的調(diào)優(yōu)建議; · 性能瓶頸的定位
一般的調(diào)優(yōu)策略如下: 在湖南移動(dòng)的調(diào)優(yōu)中,在數(shù)據(jù)庫(kù)的設(shè)計(jì)和應(yīng)用設(shè)計(jì)不做更改的前提下,首先,對(duì)IBM存儲(chǔ)系統(tǒng)和主機(jī)系統(tǒng)作深入細(xì)致的參數(shù)和配置調(diào)整。同時(shí),在湖南移動(dòng)計(jì)費(fèi)中心技術(shù)人員的全力配合下,對(duì)ESS存儲(chǔ)系統(tǒng)上的數(shù)據(jù)分布作了大規(guī)模的調(diào)整,并且通過(guò)Precise軟件對(duì)Oracle數(shù)據(jù)庫(kù)性能參數(shù)的監(jiān)控,定位對(duì)系統(tǒng)CPU, I/O等資源消耗嚴(yán)重的瓶頸,對(duì)Oracle數(shù)據(jù)庫(kù)和應(yīng)用系統(tǒng)提出性能調(diào)優(yōu)建議。 2,針對(duì)應(yīng)用的性能狀況,修改Oracle的性能參數(shù)。 ü cursor_sharing的值從exact改為force, 減少internal lock wait. ü spin_count的值從2000調(diào)整到5000。 · 根據(jù)Precise的監(jiān)測(cè)和分析結(jié)果,檢查資源消耗最大SQL語(yǔ)句的邏輯設(shè)計(jì),將排名靠前SQL語(yǔ)句的表數(shù)據(jù)與索引分別存儲(chǔ),建立合適的分區(qū)索引,提高資源消耗靠前SQL語(yǔ)句的并行度。 · 通過(guò)StorWatch Expert軟件持續(xù)監(jiān)控ESS的使用,掌握ESS的性能表現(xiàn)和使用狀況。 · 通過(guò)Precise軟件對(duì)Oracle和應(yīng)用有限數(shù)據(jù)的分析,確定當(dāng)前應(yīng)用系統(tǒng)并沒(méi)有達(dá)到理想的運(yùn)行狀態(tài),建議對(duì)應(yīng)用系統(tǒng)作相應(yīng)的檢查和調(diào)整。同時(shí),為了更準(zhǔn)確定位應(yīng)用問(wèn)題所在,建議收集更長(zhǎng)時(shí)間的數(shù)據(jù),再進(jìn)行更深入的分析。 3,調(diào)整數(shù)據(jù)在ESS上的分布。 首先將數(shù)據(jù)平均地分布在兩個(gè)cluster上,之后將數(shù)據(jù)分布在盡可能多的通道上。 由于整個(gè)數(shù)據(jù)容量有約2120GB,整個(gè)數(shù)據(jù)的遷移需要幾十個(gè)小時(shí)的時(shí)間,而在生產(chǎn)系統(tǒng)上是不允許有很長(zhǎng)的停機(jī)時(shí)間進(jìn)行數(shù)據(jù)遷移。 根據(jù)多個(gè)方案的論證對(duì)比,決定采用邏輯卷鏡像的方案實(shí)施數(shù)據(jù)遷移。具體的步驟是先將所有的邏輯卷在目的的硬盤上建立鏡像、同步數(shù)據(jù)、再將原硬盤上的鏡像部分刪除。整個(gè)數(shù)據(jù)遷移工作全部在系統(tǒng)的后臺(tái)進(jìn)行,共進(jìn)行了60個(gè)小時(shí),完成所有數(shù)據(jù)遷移。 4,對(duì)操作系統(tǒng)內(nèi)核參數(shù)作出調(diào)整 · 對(duì)vmtune的參數(shù)進(jìn)行調(diào)整如下: -p -P -r -R -f -F -N -W minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt 396414 792828 0 0 960 1024 65536 1 -M -w -k -c -b -B -u -l -d maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps 3250555 65536 16384 16 2048 2656 9 131072 1 -s -n -S -L -g -h sync_release_ilock nokilluid v_pinshm lgpg_regions lgpg_size strict_maxperm 1 0 0 0 0 0 -t -j -J -z maxclient j2_nPagesPer j2_maxRandomWrite j2_nRandomCluster 792828 32 0 0 -Z -q -Q -y j2_nBufferPer j2_minPageReadAhead j2_maxPageReadAhead memory_affinity 512 2 8 0 -V -i num_spec_dataseg spec_dataseg_int 0 512 PTA balance threshold percentage = 50.0% number of valid memory pages = 4063193 maxperm=20.0% of real memory maximum pinable=80.0% of real memory minperm=10.0% of real memory number of file memory pages = 1955960 numperm=49.3% of real memory number of compressed memory pages = 0 compressed=0.0% of real memory number of client memory pages = 0 numclient=0.0% of real memory # of remote pgs sched-pageout = 0 maxclient=20.0% of real memory · 對(duì)schedtune參數(shù)的調(diào)整如下: THRASH SUSP FORK SCHED -h -p -m -w -e -f -d -r -t -s SYS PROC MULTI WAIT GRACE TICKS SCHED_D SCHED_R TIMESLICE MAXSPIN 0 4 2 1 2 10 16 16 1 8192 CLOCK SCHED_FIFO2 IDLE MIGRATION FIXED_PRI -c -a -b -F %usDELTA AFFINITY_LIM BARRIER/16 GLOBAL(1) 100 7 4 0 紅色的為要調(diào)整的值。 5,檢查資源消耗最大語(yǔ)句的邏輯設(shè)計(jì)。 l 建立合適的分區(qū)索引 l 將排名靠前語(yǔ)句的表數(shù)據(jù)與索引分別存儲(chǔ)。 l 提高資源消耗靠前語(yǔ)句的并行度。 l Oracle 的參數(shù)cursor_sharing設(shè)為force減少internal lock wait l 調(diào)整Latch的數(shù)量(如DB_BLOCK_LRU_LATCHES)或內(nèi)存的一些參數(shù)(如SHARED_POOL_SIZE等)解決內(nèi)部鎖問(wèn)題。 6,由于數(shù)據(jù)存儲(chǔ)調(diào)整后,系統(tǒng)I/O性能狀況良好,系統(tǒng)和存儲(chǔ)端的性能表現(xiàn)已調(diào)整至最佳,系統(tǒng)和存儲(chǔ)端的性能調(diào)優(yōu)工作已經(jīng)完成。建議客戶下一步的工作重點(diǎn)是解決應(yīng)用系統(tǒng)的性能瓶頸,結(jié)合Precise對(duì)應(yīng)用的監(jiān)控結(jié)果,檢查應(yīng)用的邏輯設(shè)計(jì),數(shù)據(jù)索引的建立和分布。協(xié)助應(yīng)用開(kāi)發(fā)商修改應(yīng)用。 7,調(diào)整操作系統(tǒng)交換空間(page space)。 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: 在湖南移動(dòng)BOSS系統(tǒng)的性能調(diào)優(yōu)中,項(xiàng)目的成功經(jīng)驗(yàn)有以下幾點(diǎn): 1. 數(shù)據(jù)庫(kù)前期的合理的架構(gòu)設(shè)計(jì)(物理設(shè)計(jì)和邏輯設(shè)計(jì))是整個(gè)項(xiàng)目成敗的關(guān)鍵,合理的架構(gòu)設(shè)計(jì)為整個(gè)項(xiàng)目穩(wěn)定可靠高效運(yùn)行打下了良好的基礎(chǔ),同時(shí)也起到了事半功倍的作用。在湖南移動(dòng)BOSS系統(tǒng)中就是因?yàn)閿?shù)據(jù)庫(kù)在ESS物理存儲(chǔ)的不合理分布而直接導(dǎo)致了系統(tǒng)的I/O瓶頸。 2. 根據(jù)系統(tǒng)的物理資源,對(duì)數(shù)據(jù)庫(kù)的配置參數(shù)和操作系統(tǒng)內(nèi)核參數(shù)做合理的調(diào)整,保證系統(tǒng)物理資源(CPU,I/O,內(nèi)存和網(wǎng)絡(luò))和邏輯資源(裸設(shè)備,文件系統(tǒng)等)合理的分布和應(yīng)用。 3. 要善于借助于第三方的監(jiān)控軟件(如:StorWatch Expert和Precise軟件),這些軟件的運(yùn)用可以快速的定位性能瓶頸從而更快速的作出性能調(diào)整。 4. 檢查資源消耗最大SQL語(yǔ)句的邏輯設(shè)計(jì),將排名靠前SQL語(yǔ)句的表數(shù)據(jù)與索引分別存儲(chǔ),建立合適的分區(qū)索引,提高資源消耗靠前SQL語(yǔ)句的并行度。很多性能瓶頸往往是由于“惡劣”的SQL造成的。 5. 要有一個(gè)很好的性能調(diào)整流程和性能調(diào)整方法步驟,循序漸進(jìn),一步一步定位,逐步縮小范圍,知道最后定位性能瓶頸。 6. 要善于團(tuán)隊(duì)合作,在整個(gè)性能調(diào)整中,我負(fù)責(zé)軟件調(diào)整,要和硬件調(diào)整,網(wǎng)絡(luò)調(diào)整的技術(shù)人員通力合作。 7. 性能調(diào)整是全局的工作,涉及應(yīng)用開(kāi)發(fā),中間件,數(shù)據(jù)庫(kù),操作系統(tǒng),存儲(chǔ),網(wǎng)絡(luò)等。需要對(duì)全局的信息架構(gòu)有清晰的認(rèn)識(shí)。 你在項(xiàng)目中崗位與貢獻(xiàn): 在湖南移動(dòng)BOSS系統(tǒng)的性能調(diào)整中,我是以IBM技術(shù)顧問(wèn)身份參與性能調(diào)整的,主要負(fù)責(zé)對(duì)Oracle數(shù)據(jù)庫(kù)配置參數(shù)的調(diào)整;負(fù)責(zé)完成數(shù)據(jù)庫(kù)后期的性能監(jiān)控,性能調(diào)優(yōu);負(fù)責(zé)檢查資源消耗最大SQL語(yǔ)句的邏輯設(shè)計(jì),將排名靠前SQL語(yǔ)句的表數(shù)據(jù)與索引分別存儲(chǔ),建立合適的分區(qū)索引,提高資源消耗靠前SQL語(yǔ)句的并行度。負(fù)責(zé)在操作系統(tǒng)層面定位性能瓶頸(CPU,內(nèi)存,I/O和網(wǎng)絡(luò)瓶頸)并調(diào)整操作系統(tǒng)內(nèi)核參數(shù)。負(fù)責(zé)協(xié)助開(kāi)發(fā)人員對(duì)應(yīng)用開(kāi)發(fā)作出修改和SQL性能調(diào)整。 項(xiàng)目四:江蘇電力公司負(fù)控系統(tǒng) 項(xiàng)目簡(jiǎn)介(功能與用途): 江蘇電力公司電力負(fù)荷管理及用電監(jiān)控(簡(jiǎn)稱負(fù)控系統(tǒng))系統(tǒng)是為了解決了近年來(lái)江蘇的“電荒”而上線的一個(gè)電力調(diào)度系統(tǒng)。通過(guò)負(fù)控系統(tǒng)可以合理進(jìn)行電力的調(diào)度從而最大程度上保證企業(yè)和用戶的用電。 項(xiàng)目難點(diǎn)與解決方案: 江蘇電力公司負(fù)控系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)為DB2數(shù)據(jù)庫(kù),中間件為IBM CICS交易中間件,運(yùn)行在IBM AIX操作系統(tǒng)上,前臺(tái)采用VB和C開(kāi)發(fā)。 該項(xiàng)目的難點(diǎn)主要由以下幾點(diǎn): 1, 系統(tǒng)上線的時(shí)間非常緊迫,限期在江蘇17個(gè)地市上線,這就是說(shuō)要確保每次每個(gè)地方上線都要成功不能失敗。 2, 由于采用了IBM 的交易中間件CICS,這就需要在應(yīng)用,數(shù)據(jù)庫(kù)和CICS之間合理的調(diào)整相關(guān)配置參數(shù),確保系統(tǒng)運(yùn)行性能。 3, 在白天高峰期間,交易并發(fā)多,數(shù)據(jù)庫(kù)性能不好。 4, 應(yīng)用中部分SQL語(yǔ)句比較復(fù)雜,而且SQL語(yǔ)句的寫法和謂詞等方面使用不當(dāng),直接造成低效率的SQL運(yùn)行,占用系統(tǒng)I/O和內(nèi)存。 5, 各地市使用的DB2的版本(DB2 V5,DB2 V6,DB2 V7,DB2 V8)不一致,使用的操作系統(tǒng)(AIX 4.3.3 ,AIX 5L,AIX 5.2)版本也不一致,使用的CICS版本(CICS 4.3,CICS 5.0,CICS 5.1)也不一致;這需要在有限的時(shí)間內(nèi)在不同的版本上做調(diào)試并且只能成功。 6, 負(fù)控系統(tǒng)關(guān)聯(lián)營(yíng)銷系統(tǒng)和調(diào)度系統(tǒng)并且在同一臺(tái)主機(jī)上工作,所以上線需要和相關(guān)部門和省電力公司協(xié)調(diào),必須確保不能影響別的業(yè)務(wù)系統(tǒng),必須保證首先不能因?yàn)樨?fù)控系統(tǒng)不能上線而影響別的系統(tǒng),其次保證負(fù)控系統(tǒng)上線后不能因?yàn)閼?yīng)用對(duì)資源的占用而影響其它系統(tǒng)。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 1, CICS版本做充分的測(cè)試,確保應(yīng)用萬(wàn)無(wú)一失。在應(yīng)用開(kāi)發(fā)期間,對(duì)不同的數(shù)據(jù)庫(kù)版本,不同的操作系統(tǒng)版本和不同的 2, locklist,maxlocks,locktimeout和dlchktime)等數(shù)據(jù)庫(kù)配置參數(shù);其次,為了讓鎖的快速釋放不至于引起交易阻塞,就需要我們?cè)诒砩蟿?chuàng)建合理的索引。所以,造成引起鎖等待的應(yīng)用程序和SQL語(yǔ)句,對(duì)這樣應(yīng)用和SQL進(jìn)行合理的構(gòu)建索引。在業(yè)務(wù)邏輯允許的情況下,盡量使用UR(uncommit read)的隔離級(jí)別來(lái)提高讀并發(fā)。對(duì)于負(fù)控系統(tǒng)白天并發(fā)期間產(chǎn)生的大量鎖現(xiàn)象,首先,需要加大相關(guān)數(shù)據(jù)庫(kù)中有關(guān)鎖的參數(shù)( 3, SQL語(yǔ)句,利用DB2監(jiān)控工具(事件監(jiān)視器)找出這些SQL語(yǔ)句并作出解釋分析判斷SQL語(yǔ)句的瓶頸,對(duì)于這些問(wèn)題,對(duì)開(kāi)發(fā)人員詳細(xì)解釋如何高效的使用SQL,協(xié)助開(kāi)發(fā)人員修改應(yīng)用。對(duì)于應(yīng)用開(kāi)發(fā)中的很多運(yùn)行效率低下 4, CICS的接口,CICS和數(shù)據(jù)庫(kù)的XA接口,在業(yè)務(wù)邏輯滿足的情況下,盡量采用一階段提交(1pc),因?yàn)?pc的運(yùn)行性能要比兩階段提交好。對(duì)于應(yīng)用程序和 5, DB2的數(shù)據(jù)庫(kù)性能調(diào)整中,詳細(xì)評(píng)估系統(tǒng)中可以使用的資源和系統(tǒng)最大可能占用的資源,逐步調(diào)整數(shù)據(jù)庫(kù)的配置參數(shù)并進(jìn)一步監(jiān)控調(diào)整的結(jié)果。因?yàn)樨?fù)控系統(tǒng)和營(yíng)銷系統(tǒng),調(diào)度系統(tǒng)運(yùn)行在同一臺(tái)機(jī)器上,所以在進(jìn)行 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: 江蘇電力公司負(fù)控系統(tǒng)從2004.4月首先在無(wú)錫上線到2004年11月在南通最后上線,整個(gè)系統(tǒng)上線期間如履薄冰,如臨深淵,F(xiàn)在系統(tǒng)已經(jīng)穩(wěn)定運(yùn)行近兩年,負(fù)控系統(tǒng)的成功經(jīng)驗(yàn)有以下幾點(diǎn): 1, 需要對(duì)企業(yè)信息架構(gòu)有全局的了解,因?yàn)楝F(xiàn)在企業(yè)信息架構(gòu)非常復(fù)雜,往往涉及到的不只是數(shù)據(jù)庫(kù),還有操作系統(tǒng),中間件,應(yīng)用,存儲(chǔ)等,所以需要對(duì)信息架構(gòu)全局有很全面的了解,這就需要不斷的學(xué)習(xí)和更新新的技術(shù)。這次我們?cè)谪?fù)控系統(tǒng)上線期間,因?yàn)闀r(shí)間緊迫(一個(gè)地市只有一晚上將近10小時(shí)時(shí)間),在這么短的時(shí)間內(nèi),很難保證很順利的上線,如果出現(xiàn)問(wèn)題,一定要快速的定位是在什么層面(操作系統(tǒng),數(shù)據(jù)庫(kù),中間件,應(yīng)用,存儲(chǔ)等)出現(xiàn)的問(wèn)題然后快速解決之,所以必須具備全局的對(duì)信息架構(gòu)的駕馭能力。 2, 和相關(guān)業(yè)務(wù)部門的溝通和協(xié)調(diào)非常關(guān)鍵,很多時(shí)候我們需要他們配合才能完成相關(guān)工作,所以交流和溝通是非常關(guān)鍵的。國(guó)內(nèi)很多壟斷部門的員工往往非常牛,這就需要我們耐心的,不厭其煩的去和他們做好溝通和協(xié)調(diào)。這一點(diǎn)對(duì)負(fù)控系統(tǒng)的按時(shí)上線也非常關(guān)鍵。 3, 在企業(yè)內(nèi)部,往往可能存在很多不同版本的數(shù)據(jù)庫(kù),操作系統(tǒng),CICS和應(yīng)用版本,他們之間的兼容性非常關(guān)鍵。我們?cè)?jīng)碰到很多DB2 V8客戶端無(wú)法訪問(wèn)DB2 V7服務(wù)器的情況,也碰到很多DB2 V7客戶端訪問(wèn)DB2 V8服務(wù)器時(shí)出現(xiàn)實(shí)例crash的現(xiàn)象。同樣還有很多操作系統(tǒng)版本和CICS版本不一致所帶來(lái)的問(wèn)題。這就需要我們?cè)敿?xì)了解數(shù)據(jù)庫(kù),CICS,應(yīng)用和操作系統(tǒng)之間的兼容性問(wèn)題。 4, 在部分地市,由于使用了最新的DB2版本,發(fā)現(xiàn)上線后有很多問(wèn)題,后來(lái)經(jīng)過(guò)問(wèn)題診斷和咨詢IBM,發(fā)現(xiàn)是DB2新版本bug的問(wèn)題,所以企業(yè)在使用相關(guān)軟件的時(shí)候,最好不要用最新的版本而要用相對(duì)穩(wěn)定的版本。 5, 在進(jìn)行數(shù)據(jù)庫(kù)的配置參數(shù)調(diào)整時(shí),一定詳細(xì)了解系統(tǒng)的物理資源和邏輯資源,以及目前系統(tǒng)中已經(jīng)在運(yùn)行的系統(tǒng)和應(yīng)用,確保新上線的應(yīng)用不影響已有的應(yīng)用。 6, 要結(jié)合不同的數(shù)據(jù)庫(kù)產(chǎn)品,在保證業(yè)務(wù)邏輯允許的情況下,使用正確的隔離級(jí)別(UR)和CICS的一階段提交來(lái)最大程度上提高數(shù)據(jù)庫(kù)的并發(fā)和應(yīng)用的性能。 你在項(xiàng)目中崗位與貢獻(xiàn): 負(fù)責(zé)完成江蘇電力公司負(fù)控系統(tǒng)在17地市的上線;負(fù)責(zé)完成負(fù)控系統(tǒng)數(shù)據(jù)庫(kù)后期的性能監(jiān)控,性能調(diào)優(yōu);負(fù)責(zé)培訓(xùn)編程人員如何編寫高效的SQL,從而使整體應(yīng)用運(yùn)行效率提高;負(fù)責(zé)構(gòu)建數(shù)據(jù)庫(kù)的索引并刪除冗余的索引;負(fù)責(zé)負(fù)控系統(tǒng)的數(shù)據(jù)移植;負(fù)責(zé)協(xié)調(diào)上線期間和業(yè)務(wù)部門的交流溝通;負(fù)責(zé)負(fù)控系統(tǒng)后期的數(shù)據(jù)庫(kù)維護(hù)和技術(shù)支持。 項(xiàng)目五:烏魯木齊商業(yè)銀行綜合業(yè)務(wù)系統(tǒng) 項(xiàng)目簡(jiǎn)介(功能與用途): 烏魯木齊商業(yè)銀行銀行綜合業(yè)務(wù)系統(tǒng)是商行的核心系統(tǒng),負(fù)責(zé)處理金卡工程、電話銀行、網(wǎng)上銀行、POS、ATM 及各種自助終端,該系統(tǒng)穩(wěn)定運(yùn)行保證了聯(lián)機(jī)交易和批量處理能力的可靠性和高可用性,大大地簡(jiǎn)化了業(yè)務(wù)操作,為完善烏魯木齊商業(yè)銀行的信息決策管理體系,為提高各業(yè)務(wù)部門的風(fēng)險(xiǎn)控制和科學(xué)管理水平提供了必要的保障。 項(xiàng)目難點(diǎn)與解決方案: 烏魯木齊商業(yè)銀行數(shù)據(jù)庫(kù)在2003-08-13日出現(xiàn)系統(tǒng)故障,造成銀行綜合業(yè)務(wù)系統(tǒng)停機(jī),影響了業(yè)務(wù)的正常進(jìn)行,造成了經(jīng)濟(jì)損失和不良的社會(huì)影響。烏魯木齊商業(yè)銀行后臺(tái)采用DB2數(shù)據(jù)庫(kù),運(yùn)行在IBM AIX平臺(tái)上,使用IBM CICS交易中間件,前臺(tái)采用嵌入C編程。 該項(xiàng)目的難點(diǎn)主要由以下幾點(diǎn): 1, 由于系統(tǒng)宕機(jī)后,為了保證系統(tǒng)快速啟動(dòng),相關(guān)的CICS日志未能保存,這給后續(xù)的問(wèn)題診斷帶來(lái)的困難。 2, 由于該系統(tǒng)涉及到應(yīng)用開(kāi)發(fā)商(中聯(lián)),系統(tǒng)集成商,系統(tǒng)維護(hù)商和客戶,所以在進(jìn)行問(wèn)題診斷時(shí),大家莫衷一是,都相互推諉責(zé)任,這對(duì)準(zhǔn)確的定位帶來(lái)了困難。 3, 客戶使用的DB2版本很老(DB2 V6),IBM已經(jīng)停止技術(shù)支持和補(bǔ)丁更新。 4, 客戶的應(yīng)用程序編寫人員已經(jīng)離開(kāi)應(yīng)用開(kāi)發(fā)商公司,這給程序的更改帶來(lái)很大困難。 5, 客戶希望能夠快速定位問(wèn)題所在,并且杜絕這種問(wèn)題的重現(xiàn)。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 1, 仔細(xì)查看操作系統(tǒng)日志,數(shù)據(jù)庫(kù)診斷日志和CICS的部分日志,仔細(xì)的定位問(wèn)題所在,并且詳細(xì)詢問(wèn)客戶相關(guān)技術(shù)人員在系統(tǒng)宕機(jī)前都做了哪些操作。 2, 協(xié)調(diào)應(yīng)用開(kāi)發(fā)商,系統(tǒng)集成商和系統(tǒng)維護(hù)商,大家群策群力共同定位問(wèn)題所在,應(yīng)用開(kāi)發(fā)商負(fù)責(zé)聯(lián)系以前的編程人員,了解程序。系統(tǒng)集成商和系統(tǒng)維護(hù)商在測(cè)試機(jī)上搭建模擬環(huán)境,爭(zhēng)取在模擬環(huán)境中能夠把問(wèn)題重現(xiàn)。 3,經(jīng)過(guò)診斷發(fā)現(xiàn)是CICS編程中調(diào)用了C的malloc()函數(shù)而引起的,這需要協(xié)助開(kāi)發(fā)商修改程序。 4,引起系統(tǒng)宕機(jī)的誘因是在白天做tar磁帶的操作,由于tar磁帶導(dǎo)致AIX系統(tǒng)文件內(nèi)存使用完,CICS程序無(wú)法獲取所需的資源從而導(dǎo)致業(yè)務(wù)系統(tǒng)宕機(jī)。 5,調(diào)整AIX的內(nèi)核參數(shù),調(diào)整文件內(nèi)存和計(jì)算內(nèi)存的頁(yè)面替換算法所關(guān)聯(lián)的vmtune所對(duì)應(yīng)的maxperm,minperm和maxclient參數(shù)。 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: 通過(guò)對(duì)烏魯木齊商業(yè)銀行業(yè)務(wù)系統(tǒng)的宕機(jī)做問(wèn)題診斷,得出以下幾點(diǎn)經(jīng)驗(yàn): 1, 用戶是希望能夠解決問(wèn)題并保證系統(tǒng)的穩(wěn)定運(yùn)行,這需要應(yīng)用開(kāi)發(fā)商,系統(tǒng)集成商和系統(tǒng)維護(hù)商能夠通力合作共同找出問(wèn)題并解決之而不是相互推卸責(zé)任。 2, 要保存好相關(guān)操作系統(tǒng),CICS和數(shù)據(jù)庫(kù)的診斷日志以保證系統(tǒng)在出現(xiàn)故障時(shí)準(zhǔn)確定位,為客戶編寫腳本自動(dòng)在機(jī)器宕機(jī)時(shí)候保存相關(guān)診斷日志。 3, 與客戶相關(guān)技術(shù)人員詳細(xì)溝通,溝通系統(tǒng)宕機(jī)前所做的操作,這一點(diǎn)非常重要。 4, 不但要定位問(wèn)題,而且一定要有解決該問(wèn)題的方法,避免該問(wèn)題重現(xiàn),所以必須指導(dǎo)相關(guān)開(kāi)發(fā)人員修改程序,這需要我們具備良好的編程基礎(chǔ)。 5, 告誡客戶技術(shù)人員不要在高峰期間做compress,tar和大文件的ftp操作。 6, 在做問(wèn)題診斷時(shí),必須具備全局的操作系統(tǒng),數(shù)據(jù)庫(kù),中間件和應(yīng)用編程技術(shù)。這就需要我們要拓寬知識(shí)面,不斷補(bǔ)充和學(xué)習(xí)新的技術(shù)。 你在項(xiàng)目中崗位與貢獻(xiàn): 在該項(xiàng)目中,我主要是客戶所請(qǐng)的顧問(wèn),代表客戶負(fù)責(zé)定位診斷引起系統(tǒng)停機(jī)的主要原因;負(fù)責(zé)協(xié)調(diào)應(yīng)用開(kāi)發(fā)商修改程序,系統(tǒng)集成商和系統(tǒng)維護(hù)商搭建模擬測(cè)試環(huán)境;負(fù)責(zé)調(diào)整相關(guān)操作系統(tǒng)內(nèi)核參數(shù);在找出問(wèn)題的原因后負(fù)責(zé)協(xié)助開(kāi)發(fā)人員修改程序并在測(cè)試系統(tǒng)上模擬測(cè)試并確保穩(wěn)定可靠運(yùn)行。 項(xiàng)目六:?诿捞m機(jī)場(chǎng)離港系統(tǒng) 項(xiàng)目簡(jiǎn)介(功能與用途): ?诿捞m機(jī)場(chǎng)離港系統(tǒng)(Departure Control System 簡(jiǎn)稱DCS)主要提供辦理登機(jī)、航班控制和配載平衡三大功能。離港系統(tǒng)是機(jī)場(chǎng)和旅客直接接觸最主要的系統(tǒng)之一,牽涉到旅客辦理登機(jī)手續(xù)、行李托運(yùn)等各個(gè)環(huán)節(jié)。 項(xiàng)目難點(diǎn)與解決方案: 海口美蘭機(jī)場(chǎng)離港系統(tǒng)(Departure Control System 簡(jiǎn)稱DCS)后臺(tái)數(shù)據(jù)庫(kù)為DB2數(shù)據(jù)庫(kù),雙機(jī)熱備軟件HACMP,網(wǎng)管軟件為Netview,運(yùn)行在IBM AIX操作系統(tǒng)上,前臺(tái)采用Delphi開(kāi)發(fā)。 該項(xiàng)目的難點(diǎn)主要由以下幾點(diǎn): ?诿捞m機(jī)場(chǎng)離港系統(tǒng)(Departure Control System 簡(jiǎn)稱DCS)是我參與開(kāi)發(fā)的軟件,該系統(tǒng)在2001年四月份上線后先后出現(xiàn)的性能問(wèn)題。為此需要對(duì)數(shù)據(jù)庫(kù)配置參數(shù)作出調(diào)整。 對(duì)于上述問(wèn)題,分別采用了如下解決方案: 在2001年五月一日早上8:30左右,由于離港系統(tǒng)數(shù)據(jù)庫(kù)運(yùn)行性能非常低下,我決定對(duì)數(shù)據(jù)庫(kù)配置參數(shù)作出調(diào)整,于是我在沒(méi)有詳細(xì)考慮的情況下,對(duì)DB2數(shù)據(jù)庫(kù)的相關(guān)配置參數(shù)作出了等于原來(lái)10倍的調(diào)整,數(shù)據(jù)庫(kù)配置參數(shù)生效后,大概在8:33分左右,離港系統(tǒng)小型機(jī)宕機(jī),直接造成了從早上8:33分到9:40分這將近一小時(shí)的停機(jī),直接影響了旅客的登機(jī),辦理值機(jī)手續(xù),廣播,電話和航顯,造成了很大的影響。 項(xiàng)目成功與失敗的經(jīng)驗(yàn)歸納: 從這次失敗的的經(jīng)過(guò)中,我得到如下經(jīng)驗(yàn): 1, 系統(tǒng)(操作系統(tǒng),數(shù)據(jù)庫(kù),中間件,應(yīng)用)性能調(diào)整需要循序漸進(jìn),不可一蹴而就。 2, 調(diào)整相關(guān)配置參數(shù)時(shí),需要對(duì)該配置參數(shù)有深刻的理解,當(dāng)然這需要不斷的補(bǔ)充理論知識(shí)。 3, 在性能調(diào)整時(shí),要做好系統(tǒng)備份和數(shù)據(jù)庫(kù)備份,要膽大心細(xì),小心謹(jǐn)慎。 4, 在數(shù)據(jù)庫(kù)配置調(diào)整時(shí),一定要有最壞的打算,做好失敗冗余和恢復(fù)方案。 5, 不可完全相信所謂的經(jīng)驗(yàn)法則,那只是提供一種參考,我就是看了書上說(shuō)的把緩沖池調(diào)整為系統(tǒng)內(nèi)存的70%這條經(jīng)驗(yàn)法則才間接導(dǎo)致系統(tǒng)停機(jī)的。 6, 在系統(tǒng)運(yùn)行高峰期間,如果能夠忍受,盡量保持系統(tǒng)的平衡穩(wěn)定運(yùn)行,否則可以嘗試先在備機(jī)或測(cè)試機(jī)上調(diào)整。 7, 要不斷的認(rèn)真總結(jié)經(jīng)驗(yàn),積累。 8, 要把在書上看到的理論和在實(shí)踐中碰到的實(shí)際問(wèn)題結(jié)合起來(lái)。 你在項(xiàng)目中崗位與貢獻(xiàn): 失敗的經(jīng)驗(yàn)是一種寶貴的財(cái)富,它對(duì)我后期從事性能調(diào)整產(chǎn)生了很深遠(yuǎn)的影響,所以有時(shí)候要好好的總結(jié)失敗并從中汲取經(jīng)驗(yàn)教訓(xùn)。 |