在發(fā)布新網(wǎng)站和應(yīng)用程序時,性能測試尤其重要,因為這時還沒有任何關(guān)于應(yīng)用執(zhí)行性能的歷史數(shù)據(jù)。應(yīng)用程序框架、平臺和硬件的新技術(shù)也可能會開始起作用。硬件的變化是很快的,而使用最新發(fā)布的硬件來運行應(yīng)用程序,其性能可能比六個月前預(yù)定的硬件高很多。
性能測試應(yīng)該盡早執(zhí)行,新產(chǎn)品的所有組件都應(yīng)該先進(jìn)行測試,然后才能進(jìn)行開發(fā)。如果新硬件的容量達(dá)到了遺留系統(tǒng)硬件容量的兩倍水平,那么使應(yīng)用架構(gòu)產(chǎn)生相同性能的硬件需求就會少于過去開發(fā)的應(yīng)用程序。
如果已經(jīng)有一個可訪問和正常運行的Web應(yīng)用程序,那么先給新應(yīng)用程序分配一小部分測試帶寬(如果它將替代舊的應(yīng)用程序),然后讓最終用戶試用新應(yīng)用程序。這種“在生產(chǎn)環(huán)境中測試”的方法可以給我們提供一些非常寶貴的信息,從中可以了解當(dāng)生產(chǎn)流量進(jìn)人應(yīng)用程序時它的執(zhí)行情況。此外,我們也可以通過解析歷史Web日志來模擬一些生產(chǎn)流量,將這些流量導(dǎo)入到新應(yīng)用程序上,從而測試它在生產(chǎn)環(huán)境的運行性能。然而,這仍然屬于一種合成測試,其測試結(jié)果肯定不同于公共互聯(lián)網(wǎng)的真實測覽器或客戶端成用程序的真頭流量的測試果。通過測量到達(dá)新應(yīng)用程序的流量數(shù)量,或者將現(xiàn)有網(wǎng)站的一小部分用戶導(dǎo)入到新應(yīng)用程序中,我們就可以獲得一些寶貴的信息,了解應(yīng)用程序在正式發(fā)布和接收生產(chǎn)流量之后可能的執(zhí)行情況。
1.本地性能測試
Web開發(fā)人員應(yīng)該在專用服務(wù)器上創(chuàng)建Web應(yīng)用程序?qū)嵗?,這個專用服務(wù)器要的硬件和環(huán)境配置都要跟新網(wǎng)站及其應(yīng)用程序、數(shù)據(jù)庫或數(shù)據(jù)存儲將要使用的硬件和環(huán)境配置相類似。并不是每一位Web開發(fā)人員都能夠創(chuàng)建一個與生產(chǎn)環(huán)境類似的環(huán)境。然而,重要的是他們有足夠的可用資源,能創(chuàng)建最接近部署最終產(chǎn)品的生產(chǎn)環(huán)境。這可能意味著,Web開發(fā)人員要有一個塔式工作站,但是它的處理能力與運行生產(chǎn)網(wǎng)站的服務(wù)器相當(dāng)。這樣可以保證開發(fā)應(yīng)用程序的環(huán)境盡可能接近最終的生產(chǎn)環(huán)境。
保證網(wǎng)站或應(yīng)用程序性能接近客戶所面對環(huán)境的另一種方法是,直接在一個與生產(chǎn)環(huán)境類似的測試環(huán)境上開發(fā)應(yīng)用程序。這取決于快照時間表是否合理,以及目前有多少的試生產(chǎn)或分段環(huán)境,但是這樣做可以節(jié)約很多時間,因為本地開發(fā)者工作站通常無法反映Web應(yīng)用程序在生產(chǎn)環(huán)境的真實性能。
本地測試可以直接通過使用一些自動化工具或瀏覽器插件完成。最使用真實Web瀏覽器去測試Web應(yīng)用程序性能,因為它能夠更真實地反映網(wǎng)站的性能。大多數(shù)網(wǎng)站都是動態(tài)的,而 Jmeter I或 Apache Bench等自動化合成測試工具無法呈現(xiàn)動態(tài)內(nèi)容,如 Javascript和CSs,而且它們會增加網(wǎng)站的響應(yīng)時間。工具 Hammerhead支持在Ficx瀏覽器中重復(fù)加載一個網(wǎng)頁并清除緩存,從而可以幫助Web開發(fā)人員了解一個網(wǎng)頁的加載時間。 Firebug.則是另一個實用工具,它可以顯示W(wǎng)eb瀏覽器呈現(xiàn)一個網(wǎng)頁所需要的時間,其中包括所有的動態(tài)內(nèi)容。
如果本地測試發(fā)現(xiàn)頁面加載時間為1~3秒,而且網(wǎng)站本身沒有太多的圖片,那么這個網(wǎng)站就可能有一些問題。大多數(shù)網(wǎng)民都沒耐心,他們不愿意等待,特別是現(xiàn)在寬帶已經(jīng)非常普及,早不是撥號上網(wǎng)的時期,用戶并不理解數(shù)據(jù)庫需要先執(zhí)行一些査詢操作,然后才能呈現(xiàn)一個網(wǎng)頁。所以,在測試Web應(yīng)用程序時,如果渲染時間超過3秒鐘,那么可能就要去掉一些需要加載的靜態(tài)內(nèi)容或所執(zhí)行的前端操作數(shù)量
2.緩存
許多公司會錯誤地決定購買一個內(nèi)容交付網(wǎng)絡(luò)(CDN)。CDN通常是一種Web內(nèi)容的反向代理,所以CDN公司會在各地配置Web服務(wù)器,它很像一個web性能監(jiān)控公司。CDN不會在服務(wù)器上使用Web瀏覽器去定期測試網(wǎng)站的加載速度,而是將我們的網(wǎng)站服務(wù)器副本存儲到全國或全世界各地。使用CDN的主要原因是因為Web服務(wù)器所在位置與用戶所在位置不同,例如網(wǎng)站在加拿大多倫多,而用戶從美國堪薩斯州威奇托市訪問網(wǎng)站,所以網(wǎng)站加載時間就包括從多倫多到威奇托之間的數(shù)據(jù)加載時間。相反,CDN會使用一個Web服務(wù)器的反向代理將內(nèi)容存到本地,所以當(dāng)有人從威奇托訪問網(wǎng)站時,返回響應(yīng)的是CDN公司位于威奇托的服務(wù)器,而不是多倫多的原始服務(wù)器,這樣就可以顯著減少響應(yīng)時間。
許多CDN公司現(xiàn)在都會在服務(wù)中附加一些Web性能最佳實踐方法,如縮略或壓縮 Javascript、HTML和CSS內(nèi)容的壓縮技術(shù),甚至再添加層Web應(yīng)用程序安全抽象。這些都是非常適合生產(chǎn)網(wǎng)站的服務(wù),它們可以提高網(wǎng)站設(shè)計的性能,但是在解決性能問題時,工程師必須謹(jǐn)慎使用這些“罐裝”服務(wù)。緩存是一種加速和提升網(wǎng)站性能的好方法,但并不是一種修復(fù)性能問題的有效方法,我們應(yīng)該在開發(fā)人員的本地工作站上解決性能問題。
本文地址:http://m.cdrpkj.cn//article/4529.html