在發(fā)布新網(wǎng)站和應用程序時(shí),性能測試尤其重要,因為這時(shí)還沒(méi)有任何關(guān)于應用執行性能的歷史數據。應用程序框架、平臺和硬件的新技術(shù)也可能會(huì )開(kāi)始起作用。硬件的變化是很快的,而使用最新發(fā)布的硬件來(lái)運行應用程序,其性能可能比六個(gè)月前預定的硬件高很多。

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