其他應用軟體 - 文中系統(MERP)移植紀錄 - 電腦

前往內容


文中系統(MERP)移植紀錄

本公司是一間小公司,全部員工不過28人。引進文中系統(MERP)作為公司進出貨倉管與會計主力已經七年,另外由我自行開發太極系統作為客戶叫修管理與庫存機器整修管制系統,目前正在開發知識管理系統。

小公司的問題就是硬體設備能用就好,便宜就好,一切成本導向。不過我們公司資訊化程度在同業已經算是異數,老闆很願意在這方面投資,電腦比員工數還要多,而且平均都是i5等級以上配備8G或更多的記憶體,去年採購的機種都加上了SSD。之所以這麼搭配,都與文中MERP這套系統有關。


舊伺服器內部

而這次的紀錄的起因,是因為前陣子跑了八年太極系統的直立式ASUS伺服器快掛了,RAID一直警告磁碟有問題,硬碟散熱鼓風機也發出可怕的異音,老闆雖然問我可不可以修,但是我很老實告訴他~~~ 買一台比較划算。這台伺服器跑8年已經夠本了,現在公司隨便一台PC都跑得比這台要快。而且我比較擔心的是伺服器上的資料,萬一RAID突然毀了要重建整個系統可要花一整天才不見得會好。所以原本提案是一次換掉二台老舊的伺服器,二台作業系統都從WINDOWS SERVER 2003提升上去。基本上我管理的太極伺服器比較簡單,因為系統是我在開發,軟硬體都能掌握,就算整個移植到WIN7/WIN10的電腦還是可以活蹦亂跳,使用者一點異狀感覺都不會有。但是跑文中系統那台問題就大了,之前有接洽文中系統公司,洽詢換主機與改版升級問題。結果業務工程師告知文中MERP已經改用MS SQL SERVER作為後端伺服器資料庫系統,七年前花了七十萬買的文中系統現在如果要移植到新的windows 2008 or 2012,就必須改購昂貴的SQL SERVER作為資料庫。光是SQL的資料庫與授權部分報價台幣二十萬,每台使用者電腦安裝設定部分另收500元工資,而且設定部分全部由文中公司主導包辦,我們沒有討價還價的餘地。(意思是我們不能找其他管道買MS SQL SERVER,也不能用其他替代品,否則日後無法維護保證資料正確與安全性)

老闆聽到這裡,臉就垮下來了。我們採購文中系統之後,為了客製化一些功能又花了不少錢(加起來百萬不為過)。現在只是因為要汰換主機硬體,什麼功能都沒加就要再多花二十萬。比起買二台伺服器硬體加上作業系統還要貴。所以當下就否決掉二台伺服器都更新的計畫,只同意我先更新那台RAID已經出問題的太極伺服器。於是我就雙管齊下,開了規格找了伺服器廠商報價,同時也找零件試看看自己組台伺服器。看看老闆會選擇哪個方案。(PS.老闆是做決策負責,員工就要提解決方案讓老闆去選)

比價的結果當然是自行組裝勝出,先給各位看看我選擇的方案



ps.不要建議我用i7平台更有CP值,那些建議跑i7的請先生出SERVER版驅動程式出來再說~~~~

基本上伺服器商的報價的現貨規格都是前一代的E3 V3,記憶體也很少(4G OR 8G),更不用說還要加裝SSD那報價肯定是三級跳。我敢自己組裝這台伺服器是因為二十多年來的經驗。這個組合最適合我開發的系統,確保未來五年以內可以不間斷執行作業。而且就算零件有問題很容易找到替代品。(原廠伺服器就是一切被原廠綁死,連個安裝硬碟的TRAY都要加價收費)。當然收到機器之後很順利地安裝2008 R2作業系統(這是很早以前公司就買好,但我一直沒拿來裝),測試作業也非常正常,運作又快又安靜。搞定EMAIL SERVER與FAX SERVER(2008沒有POP3,要自己找替代品),最後利用周末時間轉移系統上線,這台伺服器就算正式開始服役了。


新伺服器內部

不過至此我的計畫只算完成了一半!! 原本我的計畫是要有二台這樣的伺服器組合成叢集系統,底層安裝免費的MS 2012 HYPER-V SERVER當成虛擬機主控系統,然後才安裝二個虛擬機上去。二台伺服器硬體互為備援,萬一其中一台需要檢修時可以借助HYPER-V之力轉移到另外一台伺服器,達到作業不中斷的穩定性。但是現在只有一台,就只能先玩玩看虛擬機好了。

了解前因後果,接下來才是真正的重點。我在這台最新伺服器上要移植舊系統文中MERP所發生的經過!! 如果網友公司有類似系統也可以參考這個經驗!! 我知道很多會計事務所都是用這套文中系統來管理客戶的帳務,所以也很容易遇到跟我相同的問題。

------------------------------------------------------------------------

本公司現在使用的文中系統是一種非常傳統的主從架構資料庫,伺服器端的資料庫是BORLAND公司出版的interbase 7.1 SP2版,時間是2003年。那個年代的PC伺服器,頂級機種也不過是雙CPU與1G的記憶體,更多機種是單核心與512MB或更少的記憶體,伺服器作業系統大多是WIN2000或更古老的WIN NT4.0,WIN2003還是剛剛問世的新鮮貨。這種軟硬體條件老實說還比不上現今數千元的智慧型手機的綜合運算能力。而當時辦公室區域網路架構還停留在100Mb,甚至很多辦公室根本沒有網路,只能單機作業,所以文中系統必須兼顧單機運作與多機網路運作二種截然不同的運作條件。

在實驗的過程中發現,文中系統的整體運作模式是這樣的。使用者端的文中系統收集了使用者要查詢的資料條件之後,交給伺服器端的interbase資料庫進行搜尋。而這套資料庫其實是一個很單純的過濾器,只能根據不同的條件來過濾整個資料庫檔案,找出符合條件的資料表(整份表格),然後"傳送"給使用者的文中系統再進行數學運算,最後以表報的方式呈現出來。所以會影響整個操作流程流暢度的關鍵總共有三個,分別是伺服器端的interbase資料庫,資料傳輸方式,使用者端的電腦。這三者要是彼此搭配有問題,整體運算效能就會有問題。所以在引進文中系統之後,陸續將公司內網提升到1Gbps(不合格網路線要換掉,HUB要換掉,工程可不小),電腦也提升到最高等級上去。

因為女人對電腦效能都是依賴感官直覺,只要操作按鍵上一個反應變慢,你的系統規格再漂亮也會被打入地獄!! 這也是這次逼我進行移植測試與調教的動力!!

由於這次是打算將文中系統移植到新伺服器內,藉由虛擬機器另外安裝2003 server作業系統來維持相同的環境。因為以前就已經實驗過,這套interbase資料庫沒辦法安裝到新型的作業系統上,會跳出要求輸入註冊碼的訊息。只有安裝到2003 server上才不會出現。但是2003這套作業系統早在去年就已經被微軟宣告放生,再也不提供任何支援。也代表硬體廠商不必再為2003作業系統開發相關的驅動程式。所以今年買到的伺服器與相關設備是沒有驅動程式可以用的!! 除非特意去買舊型伺服器主機,才有可能買到含有適用於2003的驅動程式。所以為了將來長遠維護的便利性與可靠性,改用軟體去模擬出舊型硬體條件反而是比較穩定可靠的。不管外在硬體條件如何改變,軟體模擬出來的虛擬機還是可以固定不變!!

只是想的簡單,做出來完全不是一回事。用了最新版的模擬機軟體(Oracle VirtualBox 5.0)並依照標準方式安裝2003系統與文中網路版,完全可以正常執行,但是效能卻很低落。本來以為是模擬機效能不佳,但是換了另一個機房專用的專業付費版模擬器軟體(VMware Workstation 12 Pro)卻跑得更慢,讓人完全無法理解。而且更奇怪的是,發現在模擬器上用四核心CPU去跑的速度竟然跑輸單核心CPU,似乎interbase這套資料庫系統碰到四核心環境反而會出現內部資源競爭的窘境,四個CPU互搶檔案與網路資源,反而導致整體效能衰退,運算時間拖得更長。搜尋網路很久才找到寶貴的線索,可以用特殊方式去調教interbase的執行參數環境,但是反覆測試調整之後進步也只有幾秒的差距,完全無法贏過未經調教的舊系統,所以這不應該是造成效能差距的主因。

另一方面,我也想從提升interbase的版本下手,希望能解決效能不佳與無法在新系統上執行的致命問題。但是Borland早就把這套資料庫系統放生,賣給另外一家小公司。舊系統的各種支援服務可說是完全沒有。試過在win7或win2008上安裝,都會碰到要序號與啟動碼的問題。這二個序號還好解決,隨便搜尋都可以找到。但是接下來interbase要連上官方伺服器做認證,這就完全沒辦法了。直到我在搜尋相關破解之道時,在某個古老的討論長篇內文中有提到一個borland.lic檔案要刪除重建,才讓我想到似乎在哪邊也有看過這個檔案。經過搜尋之後果然在原始安裝檔內有找到這個檔案。試著在太極伺服器的2008上重新安裝interbase,然後這註冊方式改用電話方式,雖然會跳出一串問題與說明,但是系統還是會安裝完成,只是無法啟動(之前線上註冊會卡在認證而無法完成安裝程序)。然後我將原始檔內的borland.lic覆蓋掉已安裝卻不能動的interbase目錄之內,果然破去這個困擾已久的問題。這樣就不必讓文中系統資料庫再受限於2003這套舊系統了。

但是直接安裝到WIN2008 R2真實環境下進行效能測試,結果還是好不到哪裡去。用盡所有手段不過就是從二分十秒多進步到接近一分五十多秒。與舊伺服器跑同樣測試過程不到一分二十秒,落後了30秒。這實在讓人無法理解!! 都用真實CPU環境下去拚效能,而且真實環境下是8核心3.5GHz竟然還大輸4核心2.4GHz實在沒道理。其他測試軟體跑起來起碼都贏30%~50%,唯獨文中MERP跑起來倒輸30%,這真的是欲哭無淚!!

那時懷疑過是否interbase資料庫只適合在32位元環境下執行,所以特別找出32位元版的WIN7來建構虛擬機環境。故意將虛擬機測試環境弄得很低階。單核心與1G的記憶體來安裝作業系統與文中伺服器,結果卻令人大吃一驚!! 在虛擬機環境下,這台WIN7的文中單機系統竟然跑出只要30秒的成績。但是相同虛擬機環境改成網路版文中,速度就掉到二分鐘以上(與2003結果相同)。這證明了硬體沒問題,虛擬機不是問題。文中的運算架構才是問題!!

因為單機版本文中與網路版本的文中系統都是同一套程式,差別在於單機版資料庫搜尋到的資料不需要通過網路就可以傳送給使用者的文中系統。資料的傳輸交換都在單一電腦的記憶體內執行,速度當然最快。而網路版的資料傳輸流程就要多經過作業系統、網卡驅動程式、網卡硬體、網路線、交換器、網路線、接收端網卡、網卡驅動程式、作業系統、文中系統。這樣的多道關卡在任何一關都可能造成傳輸上的延遲。而且文中系統並不是在伺服器上進行綜合統計運算的系統,他的資料庫程式只是去檔案資料庫內去挑選出符合搜尋條件的資料表出來,然後傳送給使用者。真正的統計與加減乘除運算與產生表報。都是在使用者端的電腦上執行。在測試的過程中我觀察到,文中系統伺服器會傳送大量的原始資料給使用者電腦,而不是精省的少量關鍵資料給使用者。譬如測試時要查詢某工程師當年的銷售統計資料,此時資料庫會將一大堆不相干的資料也傳輸到使用者端。而且前一筆沒有傳輸完成之前,不會送出下一筆。這樣設計的目的應該是符合當年的硬體條件,避免太過於精細的搜尋運算會嚴重拖累伺服器的運算效能。但是當現代伺服器效能大幅進步,同時走向多核心平行運算時。這種古老的搜尋架構反而是便宜了伺服器,讓網路拖累,使用者的電腦還要在一堆垃圾資料中去尋寶才能得到想要的資訊。

在測試過程中可以觀察到,本以為文中輸出報表這種操作會為伺服器CPU帶來繁重的工作負擔,但是沒想到觀察到的實際現象剛好相反。七顆CPU很閒,只有一顆比較忙(不支援多核心運算的證據),網路傳輸每秒要4MB~5MB,連續傳送110秒,等於傳送了440~500MB的資料,但是最後輸出的報表全文加起來也沒有1MB(表示絕大部分傳送資料的都是廢物)。如果網路速度慢,或是使用者電腦接收處理的速度慢,那時間就會拉更長才能得到表報,但是伺服器的CPU只是更閒而已。若不巧剛好碰上網路上有其他傳輸作業,或是使用者的電腦同時正在進行其他資料下載或運算。那整個文中系統的反應會因此變得更慢。

但由於測試期間都是同一台使用者電腦測試,也沒有同時進行其他操作。所以推論造成延遲的原因可以指向網路,但網路設備那樣多,是誰延遲拖累還是要仔細驗證才行。於是我設計了一個比較方式,在太極伺服器的2008 SERVER上與虛擬機2003 SERVER上同時都開啟1GB的RAMDISK,其目的是要避免傳統硬碟可能造成的拖延,簡化測試條件。而我自己的電腦接收端也是用4G RAMDISK,以避免傳統硬碟寫入效率較差的問題。測試方式很簡單,將單一大型檔案由二個伺服器環境下直接複製過來,觀察速度是否有差異,以判斷虛擬機的網路效能與真實機的網路效能是否有差異。果然測試的差異是非常明顯的,真實機可以用平穩的113MB的最大秒速來傳遞資料,但虛擬機卻只有50MB的秒速,而且速度忽快忽慢不穩定,最低只有25MB左右。

不過這速度都比起文中系統所需的4MB要高出很多,照理應該不是拖累的主因。況且在真實2008環境下安裝的文中,速度也沒跑比較快。同樣的檔案傳輸測試改由舊文中伺服器來跑,雖然只有100MB出頭的網速,但是文中跑起來就是比較快,而且快很多~~~不過虛擬的網路效能差那樣多倒是讓我覺得意外,原本以為去微調虛擬機內的網卡之後可以得到正常速度,但是沒想到只要動了任何依樣參數,整個系統直接立刻當機而重新開機,然後參數又恢復成原本的數值。這擺明了就是不讓你去調整虛擬機內部的網路設定。

既然不能從內部下手,從虛擬機外部設定下手總可以吧。經過多種排列組合測試,總算找出效能最高接近真實機網路效能的設定。這樣子虛擬機跑文中又少了一層阻礙,但是實測下來效能依然沒有進步多少。


看著每次測試時虛擬機內的四核心只有一顆很忙,外部真實機也只有一顆CPU稍微忙的時候。突然想到這幾年的INTEL CPU設計上都開始講求能源效益比,也就是CPU沒負擔時頻率都會往下調,有負擔時才會提升到最大設計頻率,如果超級忙才會進行超頻運算。這種設計是為了省電,也減少熱量集中的廢熱問題。但是這種設計必須由應用軟體通知作業系統,由作業系統再切換運作模式並告知CPU,由CPU根據當時的溫度條件來主動調節最後的運算頻率。現在太極上安裝的作業系統是2008 R2,也就是等同於WIN7同年代的軟體架構設計,距今也有七年之久了。對於今年剛出的intel XEON E3-1240 V5這款CPU與主機板C236晶片組的控制能力與協調能力未必能達到最佳化。因為同一台機器在虛擬機環境下設定單CPU條件時竟然可以跑出極速,那是否意味著平常太閒的CPU碰到文中這種受限網路傳輸的資料庫軟體時,也被認為是太閒的低階運算而沒有使盡全力來執行呢?

拿我自己剛剛升級WIN 10的NB來說,WIN 10內的工作管理員可以看到CPU真實的運作頻率,我平常在打字上網時就是跑800MHz而已。只有碰到特別的高解析影片播放時頻率才會上升到2GHz。這樣可以降低CPU電力的消耗與風扇的損耗,對於NB來說非常需要。而新世代的伺服器CPU也是用相同的設計,以減少機房內的耗電與散熱需求。但是文中系統的資料庫interbase 7.1是2003年的設計,可沒辦法與現代的CPU進行溝通。果然觀察運作頻率之後,文中系統都是放在低速模式下運轉(尤其是8核心狀態下根本很閒),只有在虛擬機模式下故意用單核心模式運作去強迫CPU負擔增加,此時真實狀態的CPU才會不得已提升運作頻率,但是也跑不到這顆CPU原始設計的3.5GHz,更不用說超頻上3.9GHz!!

所以要提升整體運作效率,用軟體自動控制方式已經沒辦法了(舊系統配不上新硬體,二者沒有交集)。我只好到2008系統內的電源設定,強迫指定全機都採用高效能運作模式,將CPU固定在3.5GHz的狀態下運作。果然這樣子去跑虛擬機當中的網路版文中,跑出了最快處理紀錄!! 只要51秒就處理完成,打破了舊文中系統的處理速度(一分20秒)。比起之前的二分10秒來說可是完全不同等級。將文中系統移植到太極的虛擬機上完全可以替代舊有的主機,不但提昇執行效能更增加安全性。

經過這二周以來不眠不休的測試,終於解決了這個棘手的效能問題。也順帶克服了文中系統無法搭配新硬體與新作業系統環境的註冊問題。這樣也不用怕文中公司老是逼我們花大錢要升級SQL資料庫系統。這種關鍵技術還是要掌握在自己手中才比較有保障,一昧依賴外援最後只會任人宰割的。
三民主義,民主、民粹、民不聊生~~~
真是一番辛酸血淚史,能把2003年的台中文中系統現代化,真是花了不少時間,雖然還沒看完,還是先給一個,01這種分享文很少了.

vt_hunter wrote:
本公司是一間小公司...

七年前花了七十萬買的文中系統現在如果要移植到新的windows 2008 or 2012,就必須改購昂貴的SQL SERVER作為資料庫。光是SQL的資料庫與授權部分報價台幣二十萬,每台電腦安裝部分另收500元工資,而且設定部分全部由文中公司主導包辦,我們沒有討價還價的餘地。

(恕刪)


這代表架構不變,只是換資料庫,那自己建postgre sql或sql server自己灌不就好了,然後設定db link,這樣不就解決了?
sueboy wrote:
這代表架構不變,只是換資料庫,那自己建postgre sql或sql server自己灌不就好了,然後設定db link,這樣不就解決了?


這不是沒想過,但是文中方面說如果要這樣搞,那以後就不負責本公司的維護與客製化了~~~ 這部分本公司的會計主管是不肯讓我們這樣搞的。而老闆的意思是現在文中能用就用,將來會把整個系統廢掉(因為真的很難用),改用我們自己開發的系統來取代,所以沒必要再花這種錢~~~
三民主義,民主、民粹、民不聊生~~~
可以自行選用資料庫的話,商用軟體還賺什麼

廠商都是指定規格外都不支援,運作出問題時就成藉口可以不處理
我覺得只要用 vCenter Converter 把實體機轉換成虛擬機,然後再新硬體的虛擬機當中跑就好了
喵~~滑鼠不能當飯吃,但可以混飯吃

vt_hunter wrote:
本公司是一間小公司...(恕刪)


不錯的文章!!
行有不得者,皆反求諸己。|弟子規 http://www.bfnn.org/book/books2/1722.htm

vt_hunter wrote:
本公司是一間小公司...(恕刪)


感謝樓主 詳盡的 問題解決方式分享~~

先備註一下,日後碰到類似問題可以 參考樓主的作法....
這應該比較偏向VM調教問題,且以前程式應該就不支援多核心了。
另外要看資料庫是否有可以作重整的工具。

如果將該VM 或是舊資料庫部分放在SSD (raid) 效能應該會好較多吧!

1頁 (共3頁)

前往