CCF中學(xué)生程序設(shè)計在線評測系統(tǒng)怎么總是顯示網(wǎng)頁無法訪問
它的系統(tǒng)崩潰了嗎,?,??還是有外因,?,?,?
分析問題:1,,從瀏覽器到服務(wù)器,,從HTTP請求到響應(yīng)的全部過程進(jìn)行分析。(HTTP(響應(yīng)了多少數(shù)據(jù)),中間件(配置多少線程),,應(yīng)用程序(登錄是否存在邏輯問題),,JVM(參數(shù)是否不合理),,操作系統(tǒng),,硬件(學(xué)校帶寬,CPU利用率,,磁盤利用率,,內(nèi)存利用率)都需要思考)。2,系統(tǒng)的初始登錄頁面,,加載了一些js,,css第三方類庫,jquery,bootstrap,。3,,當(dāng)考生輸入用戶名和密碼進(jìn)行登錄并成功后,響應(yīng)了大量的第三方類庫,。大約有6M,,也就是每一個考生登錄成功后,都將響應(yīng)6M數(shù)據(jù)到瀏覽器,。4,,為了找到問題的原因,我利用Jmeter工具進(jìn)行壓力測試,。準(zhǔn)備了300個考生,,在2秒內(nèi)進(jìn)行登錄,在結(jié)果集中查看響應(yīng)數(shù)據(jù),,發(fā)現(xiàn)很多考生幾乎都無法正常獲取響應(yīng)數(shù)據(jù),。所以確定是因為每當(dāng)考生登錄成功后響應(yīng)了龐大的數(shù)據(jù)量。
解決問題過程:1,,利用gzip方式進(jìn)行壓縮,。一開始我采用java代碼進(jìn)行壓縮,也就是當(dāng)瀏覽器響應(yīng)此js,,css文件的時候,,都用java代碼進(jìn)行g(shù)zip壓縮,然后響應(yīng)到頁面,,文件大小減少了三分之二左右,。 2,修改1的方式,,采用gzip.exe先把文件壓縮后,,直接放到資源路徑下。 3,,采用分步驟加載,。在初始登錄頁面上,先加載部分js,,css文件,。一旦考生登錄成功后,在加載另一部分js,css文件,。(利用瀏覽器的緩存),。后續(xù)考生在答題的過程中,,不響應(yīng)任何的js和css文件??忌痤}過程非常流暢,。考生實時取題,,提交答案,,系統(tǒng)保存答案。 4,,另一個思路,,盡量把靜態(tài)資源,放到離用戶更近的地方,。CDN技術(shù)或者Nginx技術(shù),。又考慮到學(xué)校考試是內(nèi)網(wǎng),,所以放棄CDN技術(shù),。Nginx又服務(wù)于集群或者把資源緩存起來,但是學(xué)校又是一臺服務(wù)器,,所以沒有這個必要,。 5,300個考生,,每個大約會響應(yīng)3.5M(壓縮后)左右的數(shù)據(jù)量,。也需要1.05G的內(nèi)存。所以,,將32位的JDK換成64位的JDK,,并分配了4G的內(nèi)存。 6,,在server.xml中配置了300大小的線程池,,增加請求總數(shù),排隊總數(shù),,增加連接時長等,。