基于國產(chǎn)基礎(chǔ)軟件應(yīng)用系統(tǒng)的性能測試與優(yōu)化
3 系統(tǒng)優(yōu)化
3.1 系統(tǒng)優(yōu)化框架
根據(jù)Mercury公司的報(bào)告,系統(tǒng)的性能問題由許多因素構(gòu)成。系統(tǒng)結(jié)構(gòu)、代碼的優(yōu)化程度、網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器都會(huì)對(duì)系統(tǒng)的性能表現(xiàn)造成影響。但是,影響系統(tǒng)優(yōu)化主要因素是網(wǎng)絡(luò)環(huán)境、應(yīng)用程序、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器[6]??紤]到這些因素之間的相互依賴關(guān)系,采用從高層到低層的優(yōu)化方法。該方法的特點(diǎn)是先調(diào)優(yōu)高層的環(huán)境,然后調(diào)優(yōu)較低層的環(huán)境,符合高層實(shí)現(xiàn)依賴于低層實(shí)現(xiàn)的一般規(guī)律。優(yōu)化層次如圖2所示,但如果隨意調(diào)整,容易造成循環(huán)。
(1)網(wǎng)絡(luò)環(huán)境優(yōu)化
網(wǎng)絡(luò)是影響系統(tǒng)性能的重要因素之一,其影響主要反映在事務(wù)的響應(yīng)時(shí)間與吞吐量上。在測試過程中,如果吞吐量沒有隨并發(fā)用戶增多而增大,且事務(wù)響應(yīng)時(shí)間比較長時(shí),可以考慮對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,改善網(wǎng)絡(luò)的帶寬。
(2)應(yīng)用程序優(yōu)化
應(yīng)用程序優(yōu)化針對(duì)數(shù)據(jù)訪問層,其優(yōu)化措施主要有以下幾方面:(1)優(yōu)化SQL語句;(2)盡量引入連接池機(jī)制,減少頻繁打開、關(guān)閉數(shù)據(jù)庫連接的操作,控制當(dāng)前激活的數(shù)據(jù)庫連接總數(shù),防止系統(tǒng)過載;(3)引入緩存機(jī)制,以減少磁盤I/O的次數(shù)。這些優(yōu)化措施能夠提高數(shù)據(jù)讀取速率,減少訪問響應(yīng)時(shí)間,降低資源的使用率。
(3)應(yīng)用服務(wù)器優(yōu)化
應(yīng)用服務(wù)器優(yōu)化集中在最大連接限制數(shù)、內(nèi)存配置。在大量并發(fā)的情況下,應(yīng)用服務(wù)器承受很大的負(fù)載壓力,過多地連接會(huì)很快消耗掉大量系統(tǒng)資源,過低的連接限制會(huì)增大連接時(shí)延,延長事務(wù)響應(yīng)時(shí)間。優(yōu)化時(shí)根據(jù)系統(tǒng)資源合理設(shè)置應(yīng)用服務(wù)器最大連接限制數(shù)、內(nèi)存,避免內(nèi)存泄露現(xiàn)象出現(xiàn),盡量減少響應(yīng)時(shí)間。
(4)數(shù)據(jù)庫系統(tǒng)優(yōu)化
數(shù)據(jù)庫系統(tǒng)優(yōu)化主要是配置數(shù)據(jù)緩存區(qū)大小、最大并發(fā)會(huì)話數(shù),為數(shù)據(jù)庫建立合理的索引。設(shè)置較大數(shù)據(jù)緩存區(qū),可以減少數(shù)據(jù)交換次數(shù),降低系統(tǒng)資源消耗。為大數(shù)據(jù)量、訪問頻繁的數(shù)據(jù)庫表建立合理的索引,能夠消除對(duì)表的順序存儲(chǔ),從而提高系統(tǒng)的檢索性能。在CPU資源和I/O資源可用的情況下,如果服務(wù)器有很長的事務(wù)等待隊(duì)列,增大最大并發(fā)會(huì)話數(shù),可以減少響應(yīng)時(shí)間。
3.2 醫(yī)療信息系統(tǒng)的優(yōu)化方案
本文的性能測試是在局域網(wǎng)中進(jìn)行,因此可以排除網(wǎng)絡(luò)帶寬對(duì)系統(tǒng)性能的影響。通過分析性能測試結(jié)果,結(jié)合系統(tǒng)優(yōu)化框架,醫(yī)療信息系統(tǒng)的優(yōu)化措施如下:
(1)應(yīng)用系統(tǒng)的數(shù)據(jù)庫訪問層采用了數(shù)據(jù)庫持久化技術(shù)Hibernate。編輯應(yīng)用程序的配置文件hibernate.cfg.xml,引入第三方的連接池c3p0,設(shè)置連接池的最大連接數(shù)為100;在Hibernate中使用二級(jí)緩存,設(shè)置Hibernate的加載特征為延遲加載。
(2)在應(yīng)用服務(wù)器方面,調(diào)整Tongweb的JVM堆棧和內(nèi)存的最大值、最大連接人數(shù)。編輯TongWeb4.0/bin/tongserver.sh文件,把JAVA_ARGS=”-Djmx.invoke.getters=true”修改為JAVA_ARGS=”-Xms256m-XmX750m”,調(diào)整JVM堆棧和內(nèi)存的最大值為750 M,增大Tongweb的JVM虛擬堆棧和內(nèi)存值后,不再出現(xiàn)內(nèi)存泄露現(xiàn)象;編輯tongweb4.0/conf/tongweb.xml中socket-back-log由50調(diào)為200,調(diào)整Tongweb的減少需要等待連接數(shù),減少響應(yīng)時(shí)間。
評(píng)論