黃鑫 呂曉瑋 吳曉斌 張小茜 王超群
【摘要】數(shù)據(jù)庫系統(tǒng)是客服中心提供業(yè)務(wù)功能與改善服務(wù)的基礎(chǔ),隨著數(shù)據(jù)庫表規(guī)模及查詢復(fù)雜程度增加,廣電客服中心及時升級數(shù)據(jù)庫連接池和緩存技術(shù)對現(xiàn)有Oracle數(shù)據(jù)庫進(jìn)行系統(tǒng)調(diào)整優(yōu)化,部署實施后對數(shù)據(jù)庫系統(tǒng)進(jìn)行了響應(yīng)速度和壓力測試等性能對比。
【關(guān)鍵詞】數(shù)據(jù)庫;連接池;緩存技術(shù);壓力測試
中圖分類號:TN929? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ?DOI:10.12246/j.issn.1673-0348.2021.07.026
江蘇有線南京分公司客服中心管理系統(tǒng)涉及多個功能模塊軟件,包括話務(wù)平臺軟件和自助報修回訪系統(tǒng)等,隨著公司業(yè)務(wù)流程變更還增加各類配套服務(wù)統(tǒng)計、調(diào)查報表處理和日志查詢等,這些應(yīng)用服務(wù)都要大量頻繁調(diào)用數(shù)據(jù)庫,并將訪問壓力部分集中到客服中心后臺數(shù)據(jù)庫及系統(tǒng)接口應(yīng)用服務(wù)器??头行臄?shù)據(jù)庫系統(tǒng)作為客戶呼叫業(yè)務(wù)數(shù)據(jù)倉庫,是公司與廣電用戶持久化交互式溝通的重要數(shù)據(jù)存貯,合理選擇調(diào)整部署及優(yōu)化管理配置數(shù)據(jù)庫是客服中心穩(wěn)定高效運行的基石??头行臄?shù)據(jù)庫系統(tǒng)調(diào)優(yōu)和升級部署,要考慮提升系統(tǒng)整體性能、增強(qiáng)負(fù)載能力和方便數(shù)據(jù)遷移等多方面因素。
1. 現(xiàn)狀及改進(jìn)策略
隨著公司各部門關(guān)聯(lián)業(yè)務(wù)量擴(kuò)大,后臺數(shù)據(jù)庫規(guī)模不斷增大,數(shù)據(jù)查詢復(fù)雜程度隨之增加,數(shù)據(jù)系統(tǒng)性能問題受到關(guān)注,數(shù)據(jù)庫正常高效運行對公司整體服務(wù)運營越來越重要,因此數(shù)據(jù)庫調(diào)整優(yōu)化需要持續(xù)規(guī)劃與實施。南京客服中心管理系統(tǒng)早期采用增加數(shù)據(jù)庫服務(wù)器存儲資源以及提升硬件設(shè)備CPU和內(nèi)存性能,同時針對后臺Oracle數(shù)據(jù)庫調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計并進(jìn)行數(shù)據(jù)庫訪問索引和執(zhí)行訪問SQL語句優(yōu)化方式。
近幾年客服中心管理發(fā)現(xiàn)數(shù)據(jù)庫服務(wù)器CPU使用率和內(nèi)存資源占用比例有時非常高,為此引入緩存技術(shù)即由專門緩存服務(wù)器分擔(dān)數(shù)據(jù)庫系統(tǒng)壓力,使用緩存方式后檢查數(shù)據(jù)庫服務(wù)器CPU和內(nèi)存占用率下降,系統(tǒng)整體穩(wěn)定性顯著提高。因此客服中心數(shù)據(jù)庫調(diào)整優(yōu)化首先是采用緩存技術(shù)進(jìn)行數(shù)據(jù)庫緩存架構(gòu)升級,通過緩存機(jī)制可大幅提高查詢操作效率。當(dāng)用戶再執(zhí)行相同查詢時,可直接從緩存中獲取數(shù)據(jù),可省去相關(guān)解析工作。在實際應(yīng)用環(huán)境中,并不是任何情況下數(shù)據(jù)緩存都能起到效果,通常存在一個不常改變的表并且數(shù)據(jù)庫服務(wù)器收到對這個表的大量相同查詢時,數(shù)據(jù)緩存才有好效果。對于客服中心平臺軟件B/S客戶端訪問方式及公司各部門數(shù)據(jù)庫訪問Web接口應(yīng)用,效果會比較明顯。
客服中心數(shù)據(jù)庫調(diào)整優(yōu)化采用Redis緩存技術(shù),由于Redis本身是C語言開發(fā),無需經(jīng)過JVM或者.NET Framework翻譯運行,執(zhí)行速度更快且不受Java程序運行內(nèi)存限制,缺點是無法存放對象數(shù)據(jù),數(shù)據(jù)寫入讀取要經(jīng)過序列號和反序列化過程??头到y(tǒng)現(xiàn)實情況是應(yīng)用服務(wù)器資源占用比例較低,因此可適當(dāng)增加負(fù)荷,而數(shù)據(jù)庫服務(wù)器資源占用較高,引入Redis緩存雖然增加一些額外計算工作,但總體對比測試后仍可明顯提升系統(tǒng)響應(yīng)速度。
客服中心數(shù)據(jù)庫調(diào)整優(yōu)化除采用緩存技術(shù),還升級了數(shù)據(jù)庫連接池。目前常見數(shù)據(jù)庫連接池技術(shù)有c3p0、dbcp、Druid、HikariCP等,客服中心數(shù)據(jù)庫系統(tǒng)升級最終選擇Druid連接池技術(shù)。原來用c3p0是在Java領(lǐng)域簡單易用的數(shù)據(jù)庫連接池技術(shù),客服中心早期Hibernate解決方案可內(nèi)置c3p0數(shù)據(jù)庫連接池,但c3p0相對技術(shù)性能比同類產(chǎn)品有差距,已不適應(yīng)當(dāng)下高并發(fā)場景。目前Druid和HikariCP是處于活躍更新狀態(tài)的數(shù)據(jù)庫連接池技術(shù),其中HikariCP通過字節(jié)碼精簡、優(yōu)化代理和攔截器等手段,技術(shù)性能最高,但除性能要求外,客服中心系統(tǒng)要考慮日常運維和管理,擁有強(qiáng)大監(jiān)控特性及圖形監(jiān)控界面的Druid是更好選擇。通過Druid監(jiān)控功能可清楚知道連接池和SQL工作情況,減少運維成本。
2. 系統(tǒng)升級部署
客服中心系統(tǒng)升級部署包括數(shù)據(jù)庫系統(tǒng)Redis緩存和數(shù)據(jù)庫連接池Druid部署,應(yīng)用WEB服務(wù)器Tomcat和Nginx等軟件組件安裝部署??头行腛racle數(shù)據(jù)庫系統(tǒng)最早是單機(jī)模式安裝,隨著業(yè)務(wù)量增加出現(xiàn)性能瓶頸,后期系統(tǒng)升級部署多臺數(shù)據(jù)庫服務(wù)器包括Redis緩存服務(wù)器,安裝配置采用數(shù)據(jù)庫軟件加存儲以及主從數(shù)據(jù)庫方式安裝配置。數(shù)據(jù)庫軟件加存儲方式是在多臺服務(wù)器上安裝數(shù)據(jù)庫應(yīng)用軟件,但數(shù)據(jù)文件不存放在數(shù)據(jù)庫服務(wù)器,而使用專門硬件存儲,這樣當(dāng)某臺數(shù)據(jù)庫應(yīng)用服務(wù)器出現(xiàn)故障時,可自動切換到另一臺服務(wù)器,不會中斷業(yè)務(wù),數(shù)據(jù)安全由硬件存儲增加RAID技術(shù)保障。數(shù)據(jù)庫升級連接池Druid部署,先要設(shè)置操作環(huán)境并修改配置文件,安裝啟動基礎(chǔ)配置,導(dǎo)入測試數(shù)據(jù)可用Druid數(shù)據(jù)可視化頁面等控制臺查看,集群部署要規(guī)劃配置主節(jié)點、數(shù)據(jù)節(jié)點和查詢節(jié)點等,加載文件數(shù)據(jù)查看運行情況和啟動所需服務(wù)。
客服中心系統(tǒng)升級部署要做數(shù)據(jù)庫配置及數(shù)據(jù)遷移,數(shù)據(jù)庫配置需從安全性、磁盤空間使用、維護(hù)性方面考慮。安全性方面應(yīng)避免低強(qiáng)度密碼,訪問數(shù)據(jù)庫帳號應(yīng)授權(quán)使用。磁盤空間方面應(yīng)合理規(guī)劃數(shù)據(jù)文件大小。維護(hù)性方面應(yīng)合理配置備份和同步等計劃任務(wù),確保數(shù)據(jù)安全。數(shù)據(jù)庫配置完成后,再初始化業(yè)務(wù)數(shù)據(jù)庫,將創(chuàng)建數(shù)據(jù)表、視圖、存儲過程SQL腳本導(dǎo)入數(shù)據(jù)庫,完成新數(shù)據(jù)庫初始化,然后停止運行客服中心系統(tǒng),對現(xiàn)有數(shù)據(jù)庫進(jìn)行完整備份并還原至新數(shù)據(jù)庫,完成數(shù)據(jù)遷移。
3. 系統(tǒng)性能測試
數(shù)據(jù)庫系統(tǒng)升級部署優(yōu)化改造后,要對各項應(yīng)用功能進(jìn)行訪問性能測試,對數(shù)據(jù)庫系統(tǒng)采用直接操作數(shù)據(jù)庫表方式進(jìn)行測試,因新增緩存技術(shù)進(jìn)行數(shù)據(jù)庫緩存架構(gòu)優(yōu)化和數(shù)據(jù)庫連接池升級,訪問話務(wù)系統(tǒng)壓力測試實際也完成了對后臺數(shù)據(jù)庫系統(tǒng)的訪問測試。
客服中心系統(tǒng)性能測試,主要通過行業(yè)自動測試工具和測試技術(shù)手段,模擬正常和峰值及異常負(fù)載條件下系統(tǒng)的各項指標(biāo),確定軟件并發(fā)能力和排查性能問題,為提高軟件產(chǎn)品質(zhì)量提供依據(jù)。目前客服平臺系統(tǒng)因撤銷了綜合業(yè)務(wù)信息網(wǎng)對外服務(wù),網(wǎng)絡(luò)信息安全管控后公司各部門對外交互接口訪問峰值可控,而部門內(nèi)部訪問人員增長有限,因此測試重點在于前臺應(yīng)用系統(tǒng)訪問響應(yīng)速度及后臺數(shù)據(jù)庫緩存和連接池系統(tǒng)整體運行性能。
系統(tǒng)軟件測試工具主要采用Chrome開發(fā)者工具和LoadRunner進(jìn)行性能檢測,客服中心系統(tǒng)性能測試主要包括響應(yīng)速度測試和并發(fā)測試。響應(yīng)速度測試是檢測客服中心系統(tǒng)的訪問響應(yīng)速度。網(wǎng)頁渲染的速度可以直觀的反應(yīng)頁面從請求訪問到展現(xiàn)在客服代表面前所需要的響應(yīng)時間,通過響應(yīng)速度測試,可以找到頁面中加載及響應(yīng)速度較慢的文件,為優(yōu)化提供依據(jù)。系統(tǒng)對開發(fā)的各功能模塊頁面進(jìn)行測試,訪問頁面前打開Chrome開發(fā)者工具,刷新并查看頁面?zhèn)€元素加載情況,然后多次測試分析,完整測試每個分支功能。管理系統(tǒng)并發(fā)測試使用LoadRunner創(chuàng)建Web-HTTP/HTML腳本文件,然后點擊編輯,選中打開瀏覽器,錄制并生成操作腳本,通過修改參數(shù)增大測試并發(fā)數(shù)量,查看網(wǎng)站響應(yīng)情況,對WEB應(yīng)用服務(wù)Tomcat和Nginx等組件也進(jìn)行了測試。通過響應(yīng)速度測試,發(fā)現(xiàn)部分頁面JavaScript渲染速度慢的問題,通過優(yōu)化前端腳本成功解決,通過LoadRunner驗證了并發(fā)性能,并改善了性能不達(dá)標(biāo)的頁面的程序代碼,最終達(dá)到預(yù)期系統(tǒng)響應(yīng)及并發(fā)能力范圍。
客服系統(tǒng)Oracle數(shù)據(jù)庫壓力測試是通過模擬大量話務(wù)查詢客戶端同時操作數(shù)據(jù)庫,獲取數(shù)據(jù)庫服務(wù)器在較大壓力狀況下的性能瓶頸和最大吞吐率,向數(shù)據(jù)庫及服務(wù)器管理員提供高并發(fā)下服務(wù)器鏈接、數(shù)據(jù)庫吞吐量、緩存命中和處理器CPU及磁盤性能狀況指標(biāo)。
客服中心系統(tǒng)Oracle數(shù)據(jù)庫壓力測試會對服務(wù)器產(chǎn)生較大的壓力,如果使用和正式數(shù)據(jù)庫同一存儲設(shè)備將會影響線上業(yè)務(wù),所以要用配置相同或相近備用服務(wù)器進(jìn)行測試,并模擬相同數(shù)據(jù)量以得到可靠測試結(jié)果。使用Swingbench軟件進(jìn)行功能測試前,要搭建Oracle數(shù)據(jù)庫服務(wù)器測試環(huán)境,包括Linux系統(tǒng)和Oracle數(shù)據(jù)庫及虛擬機(jī),再用Swingbench進(jìn)行測試和導(dǎo)入數(shù)據(jù)進(jìn)行初始化,然后運行Swingbench向?qū)?,選擇創(chuàng)建測試庫并填充數(shù)據(jù),根據(jù)客服中心實際生產(chǎn)系統(tǒng)數(shù)據(jù)庫規(guī)模,選擇填充10GB模擬數(shù)據(jù),開始創(chuàng)建測試庫。選擇Swingbench各項參數(shù)設(shè)置后執(zhí)行基準(zhǔn)測試,具體測試界面如圖1所示:
在測試過程界面圖中,使用Swingbench自帶StessTest腳本啟動數(shù)據(jù)庫壓力測試,該腳本運行時將自動產(chǎn)生數(shù)據(jù),并自動執(zhí)行數(shù)據(jù)庫操作,模擬設(shè)置并發(fā)用戶,相當(dāng)于管理員直接進(jìn)行數(shù)據(jù)庫操作根據(jù)客服中心日常工作統(tǒng)計情況將模擬測試的插入、查詢、更新和刪除操作分別設(shè)置比例,最后啟動壓力測試得到測試性能報告。通過模擬測試結(jié)果,可看到在單實例數(shù)據(jù)庫環(huán)境中,大量并發(fā)用戶同時操作,數(shù)據(jù)庫服務(wù)器仍能正常提供高性能處理服務(wù),但處理器CPU占用比率升高,數(shù)據(jù)庫系統(tǒng)響應(yīng)時間延遲加大。
4. 總結(jié)與展望
從行業(yè)發(fā)展來看,客服中心系統(tǒng)優(yōu)化升級越來越側(cè)重于軟件升級與服務(wù)方面,體現(xiàn)了軟件即服務(wù)新理念,廣電客服中心數(shù)據(jù)庫系統(tǒng)升級部署也是為了改善后臺支撐系統(tǒng)性能,更好服務(wù)客戶和提升自身運營管理,強(qiáng)化客服中心整體系統(tǒng)服務(wù)能力及其安全穩(wěn)定性。南京客服中心采用Druid數(shù)據(jù)庫連接池和Redis緩存技術(shù)實施了數(shù)據(jù)庫緩存架構(gòu)升級和數(shù)據(jù)庫連接池調(diào)整優(yōu)化,取得了較好的數(shù)據(jù)系統(tǒng)處理性能提升,經(jīng)過測試達(dá)到了預(yù)期效果。
參考文獻(xiàn):
[1]孫志勇.壓縮數(shù)據(jù)庫中大規(guī)模電子信息緩存優(yōu)化方法[J].電子設(shè)計工程,2020(7):95-103.
[2]常祖政.Tomcat數(shù)據(jù)庫連接池的工作原理與配置[J].信息與電腦,2017(18):120-124.
[3]田稼豐.基于金融場景的數(shù)據(jù)庫性能評估工具[J].信息通信技術(shù)與政策,2020(4):85-90.
[4]董鵬,李海濤.高并發(fā)訪問下數(shù)據(jù)庫連接池的研究與設(shè)計[J].電腦知識與技術(shù),2017(8):1-5.