筆者在一家制藥集團企業,負責信息化管理,主要內容涵蓋公司的ERP、HR等各類業務系統的運維管理,公司的日常運營依賴這些業務系統。
近期,公司的HR業務系統訪問緩慢,該系統采用B/S架構,前端為Windows 2008,后臺采用SQL 2008數據庫,因為是需要瀏覽器訪問的系統,開始筆者認為是訪問者的網絡或電腦等個別問題,但隨著用戶的大面積反饋,筆者意識到事情并不簡單,應該是系統出問題了。
集團公司的薪酬發放與通知都依賴該業務系統,現在已是臨近工資發放期了,若因系統問題而耽誤集團及各公司的薪酬結算工作,那影響可就大了。筆者不敢怠慢,急忙來到系統服務器所在機房進行檢測排查,該系統是架設在兩臺IBM 3650 M4服務器上的,前期因服務器硬盤損壞導致系統停擺過,后經筆者與服務器工程師的修復維護后,系統恢復了正常。這次再度出現系統問題,筆者懷疑還是系統硬件故障解決不徹底,于是將系統數據庫遷至一臺新服務器上,結果故障依舊。
問題與之前還是有所不同的,看來還要先從軟件入手。通過觀察,由于操作系統等外圍軟件環境正常,因此主要還是需要檢查業務系統,而系統前端占用資源很少,解決的重點還是在后臺數據庫端,該系統采用的數據庫為SQL Server 2008 R2。
是不是數據庫負擔太重而導致運行緩慢呢?為此,筆者首先關閉了SQL報表等閑置組件,目的是去除數據庫冗余組件,以便于系統輕裝前進,減輕SQL數據庫的運行負擔,但經業務人員試用還是反映系統緩慢。筆者再度深入優化,對SQL數據進行了針對性的調優處理,主要處理步驟如下。
1.在SQL Server管理器中選定數據庫,右擊鼠標選擇屬性,看一下“常規”頁簽中數據庫目前使用大小及剩余空間大小,目的是看看SQL的運行空間是否滿足基本需要。通過檢查發現一切正常。
2.重新設置AWE的內存分配,目的是在32位版本的Windows操作系統上允許使用超過4GB的物理內存,使32位版本的系統最多可支持64GB的物理內存,具體操作是:
點擊SQL Server管理器中的左樹型框中第一列看屬性,打開AWE分配,設置分配給SQL Server最小、最大的內存大小。現場主機內存如為32GB,則建議將最大、最小內存的值調整為20GB,相關值設置的標準為數據庫主機內存的60%(如圖1)。
在SQL Server管理器設置好AWE分配后,還要在本地安全策略中打開鎖定頁使其生效:
在Windows系統的運行中輸入gpedit.msc,進入計算機配置→Windows設置→安全設置→本地策略→用戶權限分配→內存中鎖定頁面,將裝SQL Server數據庫的用戶加入到內存鎖定頁面中。
3.查看SQL是否有出現阻塞鎖,對檢查出來的結果進行截圖,并將阻塞會話的根源給kill掉,查看方法如圖2所示。
通過上述處理,情況依然沒有起色。筆者又采用重建索引維護計劃,收集業務系統客戶端與服務端線程信息,以定位是否程序有問題,及再度對Windows 2008 Server操作系統的外圍檢查,但通過一系列檢測依然沒有發現問題。

圖1 調整服務器內存

圖2 查看SQL是否有阻塞鎖
因為上述辦法是SQL Server處理較為常用及有效的手段,除此之處,就是需要深度優化了,但這個過于專業,不是筆者所能處理的了。當時供應商工程師也建議過,實在不行可以切換到Oracle數據庫,據其介紹,Oracle較SQL的運行效率及穩定性方面更高一些,在應對多用戶、大并發方面的效果更加明顯。但考慮公司數據庫體量還不是太大,另外,變更數據庫總是有風險的,畢竟一種類型數據強行并入另一品牌數據庫,還需要做多方面的轉換,未知因素與風險不好把控,慎重起見,沒有同意該方案,而是認為還是要從當前情況找原因。
在長時間的查找與思考過程中,突然注意到服務器的硬盤燈一直在閃爍,這說明有大量讀寫數據的情況存在。會不會是I/O問題呢?因為大量的I/O讀寫若無法及時響應,也會成為瓶頸所在。該服務器是2014年購買的,當時是按標配(16GB內存、300GB機械硬盤,而供應商給的推薦配置為64GB內存,最好是固態硬盤,當時考慮到數據量較小且預算資金有限,就采用了標配服務器來采購應用。想到這里筆者有了思路,臨時找了一臺高性能服務器遷移過去,果然訪問效率有了大幅提升,看來就是這個原因。筆者在升級了服務器的硬件設備后,順利解決了問題。
事后通過反思,筆者總結以下幾點。
1.硬件平臺一定要及時升級更新。該標配服務器盡管一開始能夠滿足需求,但隨著數據量與訪問量的增加,漸漸就不堪重負了,當時筆者只一味地在軟件優化上硬啃骨頭,沒有意識到硬件平臺升級的重要性,導致事倍功半。盡管開始也更換了服務器,但當時誤以為是原故障解決不徹底,且更換的新服務器也是類似配置的服務器,因此沒能及時發現問題。由此看來,硬件平臺也是系統運維管理中相當重要的一部分,一定不要忽視。

圖3 操作系統與數據庫均為64位系統
2.AWE內存優化的處理事 倍 功 半。AWE(Address Windowsing Extensions)內存,主要功能是允許32位應用程序分配64GB物理內存,并把視圖或窗口映射出2GB虛擬地址空間的限制。筆者所設置AWE的內存分配,主要針對32位操作系統有效,而公司的服務器操作系統及數據庫系統均為64位(如圖3),所以這一舉措收效甚微。筆者開始以為這里是重點所在,結果耗費了大量時間,明顯是走了彎路。
3.處理過程中一定要細心沉穩,找出根源看似偶然,但中間即有實力也有運氣的成分,更是建立在辛苦努力與大量的調研咨詢的基礎上,只有基礎工作扎實、到位了,才會有靈光一閃的點晴之筆。