【摘要】文中從維護(hù)工作的角度出發(fā),闡述了服務(wù)器內(nèi)存的設(shè)置,并闡述如何配置服務(wù)器使內(nèi)存加倍,對(duì)服務(wù)器內(nèi)存的配置和維護(hù)工作有一定的指導(dǎo)作用。
【關(guān)鍵詞】內(nèi)存;共享;遷移
一、引言
隨著中國電信業(yè)的驚人發(fā)展,各種新業(yè)務(wù)層出不窮,而且?guī)缀跛械臉I(yè)務(wù)都要在計(jì)算機(jī)平臺(tái)上受理,而大多數(shù)計(jì)算機(jī)系統(tǒng)是客戶機(jī)——服務(wù)器模式,這就要求后臺(tái)服務(wù)器要足夠“強(qiáng)壯”,所以運(yùn)行電信重要業(yè)務(wù)的服務(wù)器都是采用雙機(jī)熱備。所謂“雙機(jī)熱備”是指兩臺(tái)小型機(jī)通過相應(yīng)的軟件互為備份,任何一臺(tái)機(jī)器發(fā)生故障,另一臺(tái)都可以將應(yīng)用系統(tǒng)接管。這種模式大大提升了計(jì)算機(jī)系統(tǒng)的可靠性。
二、現(xiàn)狀
以兩臺(tái)惠普K360小型機(jī)為例,使用的數(shù)據(jù)庫為SYBASE 11.0,兩臺(tái)小型機(jī)共用一個(gè)磁盤陣列。陣列上劃分了兩個(gè)包,每個(gè)包上運(yùn)行一個(gè)數(shù)據(jù)庫,一個(gè)運(yùn)行收費(fèi)數(shù)據(jù)庫,一個(gè)運(yùn)行計(jì)費(fèi)數(shù)據(jù)庫。在正常狀態(tài)下,每個(gè)小型機(jī)管理一個(gè)數(shù)據(jù)庫,當(dāng)任何一個(gè)小型機(jī)發(fā)生故障時(shí),發(fā)生故障的小型機(jī)管理的數(shù)據(jù)庫會(huì)自動(dòng)切換到另一臺(tái)小型機(jī)上。
惠普K360小型機(jī)運(yùn)行的操作系統(tǒng)為HP_UX。操作系統(tǒng)中有一個(gè)重要的參數(shù)“SHMAX”,這個(gè)參數(shù)表示操作系統(tǒng)可分配給應(yīng)用的最大共享內(nèi)存。由于我們每臺(tái)小型機(jī)有1G的物理內(nèi)存,為了保證HP_UX的正常工作,需要為系統(tǒng)保留200兆內(nèi)存,也就是說可以拿出800兆內(nèi)存供數(shù)據(jù)庫使用。在SYBASE數(shù)據(jù)庫中也有一個(gè)參數(shù)“total memory”,這個(gè)參數(shù)表示運(yùn)行數(shù)據(jù)庫的SERVER一共可以占用多大的內(nèi)存(一個(gè)SERVER上可運(yùn)行若干數(shù)據(jù)庫)。由于數(shù)據(jù)庫可占用內(nèi)存的大小直接影響到數(shù)據(jù)庫的性能,所以我們要盡可能多的把內(nèi)存分配給數(shù)據(jù)庫的SERVER。這樣說來,最樂觀的情況是“total memory”設(shè)置為400000(total memory是以“塊”為單位的,一塊等于2K,400000塊正好是800兆)。但簡單的這樣設(shè)置是不可行的。我們先來模擬一下這樣設(shè)置后的系統(tǒng)的運(yùn)行:每臺(tái)機(jī)器各有200兆系統(tǒng)內(nèi)存,操作系統(tǒng)可以正常的運(yùn)行,每個(gè)SERVER分別得到了兩臺(tái)主機(jī)的800兆共享內(nèi)存,也運(yùn)行的相安無事。但當(dāng)一個(gè)主機(jī)發(fā)生故障時(shí),問題就出現(xiàn)了,發(fā)生故障主機(jī)的SERVER要遷移到另一臺(tái)主機(jī)上,但此時(shí)那臺(tái)主機(jī)的內(nèi)存已經(jīng)全被占用了,所以這個(gè)SERVER將無法啟動(dòng),使用這個(gè)SERVER的業(yè)務(wù)系統(tǒng)將被停掉。雙機(jī)熱備實(shí)際上并未起到應(yīng)有的作用,這是我們不愿意看到的,也是電信業(yè)務(wù)系統(tǒng)絕不允許的!那么我們只能犧牲性能來保證系統(tǒng)的穩(wěn)定,也就是說“total memory”設(shè)置為200000,這樣當(dāng)一個(gè)主機(jī)發(fā)生故障時(shí),SERVER可以順利切換。在這種情況下,這臺(tái)主機(jī)操作系統(tǒng)使用200兆內(nèi)存,兩個(gè)數(shù)據(jù)庫各用400兆內(nèi)存,加起來正好是1G。但小型機(jī)出故障的概率極低,系統(tǒng)在絕大多數(shù)情況下每個(gè)SERVER都是運(yùn)行在自己的主機(jī)上的,如果SERVER只能使用400兆的內(nèi)存,電信的系統(tǒng)管理員只能眼睜睜的看著有400兆的內(nèi)存閑置,這是一種巨大的浪費(fèi),而且小型機(jī)的性能也會(huì)大打折扣。
三、充分利用內(nèi)存的設(shè)置方法
首先先來假設(shè)一種理想狀態(tài):如果雙機(jī)熱備中的兩臺(tái)主機(jī)都正常,那么每臺(tái)主機(jī)的數(shù)據(jù)庫都分別占滿各自主機(jī)的800兆共享內(nèi)存;當(dāng)雙機(jī)熱備中的一個(gè)主機(jī)發(fā)生故障時(shí),在發(fā)生故障主機(jī)上的數(shù)據(jù)庫遷移之前,讓正常的主機(jī)上的數(shù)據(jù)庫自動(dòng)的讓出400兆共享內(nèi)存,這樣數(shù)據(jù)庫遷移就會(huì)成功。但計(jì)算機(jī)系統(tǒng)是不會(huì)自己做到上述“孔融讓梨”般操作的。解決問題的思路是:通過程序逼迫正常的主機(jī)讓出內(nèi)存。
第一步,我們先要分別在兩臺(tái)主機(jī)的SYBASE目錄下生成兩個(gè)配置文件。以收費(fèi)主機(jī)為例,正常情況下,SYBASE有兩個(gè)配置文件,分別是:SYBASE1.cfg和SYBASE2.cfg。這兩個(gè)文件是數(shù)據(jù)庫啟動(dòng)時(shí)所必需的,其中SYBASE1.cfg是收費(fèi)SERVER的配置文件,SYBASE2.cfg是計(jì)費(fèi)SERVER的配置文件。現(xiàn)在我們將SYBASE1.cfg中[Physical Memory]的參數(shù)total memory設(shè)置為400000,再將SYBASE2.cfg中[Physical Memory]的參數(shù)total memory設(shè)置為200000。除此之外,還要再生成一個(gè)文件SYBASE1.alt,這個(gè)文件與SYBASE1.cfg幾乎一樣,只不過total memory設(shè)置為200000。
第二步,在主機(jī)/etc/cmcluster/pkg2/sybase.sh文件中,在啟動(dòng)計(jì)費(fèi)數(shù)據(jù)庫的命令行“su-sybase-c\"/sybase/install/startserver-f/sybase/install/RUN_SYBASE2”之前加入如下代碼:
#使用STOP_SYBASE1腳本停止sybase1
su-sybase-c\"/sybase/install/STOP_SYBASE1\"
#將SYBASE1.cfg改名為SYBASE1.cfgbak,將SYBASE1.alt改名為SYBASE1.cfg
Mv$
mv$
#啟動(dòng)sybase1
su-sybase-c\"/sybase/install/startserver-f/sybase/install/RUN_SYBASE1
第三步,在計(jì)費(fèi)主機(jī)上也做相同的工作。
經(jīng)過以上三步設(shè)置,我們就可以達(dá)到充分利用內(nèi)存了。
四、結(jié)束語
通過這種內(nèi)存加倍的方法,不但可以為電信事業(yè)節(jié)約很多寶貴的資金,又能讓我們的系統(tǒng)安全、快速,更好的為我們的電信用戶服務(wù),在市場競爭中添加一個(gè)砝碼。