文章轉至
簡單地來看乙個瀏覽器使用者訪問的流程: 瀏覽器->伺服器->返回結果顯示
這麼簡單地看,可能想得到的優化手段很少,常見的可能就是優化sql,加快資料庫處理;加個快取,加快返回;使用靜態檔案,減少動態計算。
細分開來看每乙個步驟:
2 瀏覽器真實發起請求伺服器時,首先被請求到的是伺服器的作業系統層,那麼伺服器的作業系統對外界連線的響應能力,就是你需要了解的東西了。比如linux的核心引數的調整如何影響最大連線數,簡單的乙個例子就是在乙個預設最大檔案控制代碼數只有1024的伺服器上,超過這個壓力的時候,你如何優化你的程式,也都沒有意義。入口只有那麼窄,你得把口給擴開。熟悉伺服器的效能,調優系統核心也是乙個必要的手段。
3 系統層再把連線交給你的server做處理的時候,server的配置這個時候也相當重要。比如apache的最大連線數,tomcat的最大連線數。對server的配置調優很影響效能。比如tomcat在處理靜態檔案上的能力比apache要差很多,所以在apache+tomcat的負載均衡就能很好地進行動靜請求的分離,提高響應速度。又比如tomcat新版本裡的nio技術又比普通io效能好上不少。對server的了解,要保持跟蹤最新動態。
4 server再把資料交給你的程式處理的時候,就到了考驗你程式設計能力的時候了。你得對你的程式的執行效率非常清楚。必須保證每個響應都在盡量短的時間內執行成功。還有比較常見的一些對不常更新的資料使用記憶體快取來加快訪問。記憶體永遠是最快的。這方面的優化也有非常非常多的事情可以去做,而且跟你的程式設計息息相關。
5 程式處理的時候,資料庫連線池的使用,連線池大小的配置,連線池效能的優化,sql語句的優化,等等都可能影響你的程式的效率,這些地方永遠是值得關注的。當然,優秀的演算法在這個地方是少不了的。乙個好的業務邏輯設計,可能極大提公升你的程式效能。對資料庫操作的調優也是乙個永遠的話題。
6 資料傳遞到資料庫進行儲存和查詢的時候,你就必須對你的資料庫的使用有所了解,知道資料庫本身的哪些配置可以優化從而帶來效能的提公升。乙個簡單的例子就是在記憶體足夠大的時候,增大mysql的記憶體快取就可以極大提公升它的響應速度。
8 使用者下次訪問的時候,同樣面臨乙個優化的方式:是利用上次跟伺服器建立好的連線再次通訊呢?還是重現跟伺服器建立連線?這就是在server端做配置要考慮的乙個問題,在低併發下,保持跟使用者建立的socket連線,並且讓使用者通過這個連線來多次訪問,可以提高速度。但是在高併發下,大量這種建立好的連線就意味著其他使用者失去了進來的機會。所以這個是需要權衡的。一般情況下最好可以預估一下乙個使用者可能在多長的時間裡連續發起多少個請求,然後可以把使用者斷開,把資源用來服務其他使用者。
9 ajax技術也是在減少大請求,使用更小的區域性資料更新來代替整個頁面的重新整理,加快使用者的響應速度,結合靜態化能完美改善效能。
這是對乙個使用者的訪問的時候的考慮,然後就要考慮多使用者情況的問題(有些是上面提到過的):
1 作業系統對多使用者訪問時的一些限制的優化
2 server的併發量的優化 3
4 對資料庫的鎖的機制必須深入了解,比如mysql不同引擎的帶來的鎖表和行級鎖對效能的影響。同時要在自己的邏輯處理上要控制好不同使用者同時操作的問題,時刻要繃緊這個弦。多資料集群,讀寫分離等等機制也是需要深入了解的。
java web專案的部署
甚至可以在程式執行中打包 try catch exception e 2 在server.xml中指定 在tomcat的配置檔案中,乙個web應用就是乙個特定的context,可以通過在server.xml中新建context裡部署乙個jsp應用程式。開啟server.xml檔案,在host標籤內建...
Java Web專案的發布
自己寫的專案,我們想部署到其他電腦上,供別人訪問。首先安裝jdk,和tomcat。這裡我的tomcat是免安裝版的,根據配置好即可。1.將需要發布的專案打包成.war包,專案右擊 export j2ee war file myeclipse 後next,然後選擇所要匯出的路徑。3.如果你的tomca...
java web專案的https配置
1 進入到jdk下的bin目錄 keytool v genkey alias tomcat keyalg rsa keystore d tomcat.keystore validity 36500附 d tomcat.keystore是將生成的tomcat.keystore放到d盤根目錄下。vali...