● 增長鏈接數
● 調整工做模式
● 啓用gzip壓縮
● 調整JVM內存大小
● 做爲web服務器時,與Apache或者Nginx整合
● 合理選擇垃圾回收算法
● 儘可能使用較新的jdkjavascript
代碼css
<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="1000" minSpareThreads="100" maxSpareThreads="200" acceptCount="900" disableUploadTimeout="true" connectionTimeout="20000" URIEncoding="UTF-8" enableLookups="false" redirectPort="8443" compression="on" compressionMinSize="1024" compressableMimeType="text/html,text/xml,text/css,text/javascript"/>
● org.apache.coyote.http11.Http11NioProtocol:調整工做模式爲Nio
● maxThreads:最大線程數,默認150。增大值避免隊列請求過多,致使響應緩慢。
● minSpareThreads:最小空閒線程數。
● maxSpareThreads:最大空閒線程數,若是超過這個值,會關閉無用的線程。
● acceptCount:當處理請求超過此值時,將後來請求放到隊列中等待。
● disableUploadTimeout:禁用上傳超時時間
● connectionTimeout:鏈接超時,單位毫秒,0表明不限制
● URIEncoding:URI地址編碼使用UTF-8
● enableLookups:關閉dns解析,提升響應時間
● compression:啓用壓縮功能
● compressionMinSize:最小壓縮大小,單位Byte
● compressableMimeType:壓縮的文件類型
● redirectPort:服務器的重定向端口html
Tomcat的工做模式分爲3種:Bio、Nio、Apr
一、Bio(Blocking I/O):默認的工做模式,阻塞式I/O 操做,沒有任何優化技術處理,性能比較低。
二、Nio(New I/O或者Non-Blocking):非阻塞式I/O操做,比Bio有更好的處理併發的性能。
三、Apr(Apache Portable Runtime,Apache可移植運行庫):首選工做模式,主要爲上層的應用程序提供一個可跨越多操做系統平臺使用的底層支持接口庫
注意:在Linux系統中Tomcat8版本使用的是Nio工做模式,Linux 系統中Tomcat7版本(包含)如下的是默認爲Bio工做模式;須要修改Connector(server.xml文件)配置來啓動:示例:java
<Connector port=」8080」 protocol=」org.apache.coyote.http11.Http11NioProtocol」 connectionTimeout=」20000」 redirectPort=」8443」 />
阻塞式I/O模型:應用進程調用recv函數系統調用時,若是等待要操做的數據沒有發送到內核緩衝區,應用進程將阻塞,不能接收其餘請求。反之,內核recv端緩衝區有數據,內核會把數據複製到用戶空間解除阻塞,繼續處理下一個請求。(內核空間(緩衝區)→→用戶空間(系統調用))
非阻塞式I/O模型:應用進程設置成非阻塞模式,若是要操做的數據沒有發送到內核緩衝區,recv系統調用返回一個錯誤,應用進程利用輪詢方式不斷檢查此操做是否就緒,若是緩衝區中有數據則返回,I/O操做同時不會阻塞應用進程,期間會繼續處理新請求。
I/O複用模型:阻塞發生在select/poll的系統調用上,而不是阻塞在實際的I/O系統調用上。能同時處理多個操做,並檢查操做是否就緒,select/epoll函數發現有數據就緒後,就經過實際的I/O操做將數據複製到應用進程的緩衝區中。
異步I/O模型:應用進程通知內核開始一個異步I/O操做,並讓內核在整個操做(包括數據複製緩衝區)完成後通知應用進程,期間會繼續處理新請求。
I/O操做分爲兩個階段:第一個階段等待數據可用,第二個階段將數據從內核複製到用戶空間。
前三種模型的區別:第一階段阻塞式I/O阻塞在I/O操做上,非阻塞式I/O輪詢,I/O複用阻塞在select/poll或epoll上。第二階段都是同樣的。而異步I/O的兩個階段都不會阻塞進程。web