(面試)Tomcat優化有哪些方式?

1.關閉AJP端口8009
     在tomcat前再使用web服務器時,即便tomcat提供的都是靜態資源文件,情況都要比直接使用http連接差的多,如果確實有需要集成前置服務器,走AJP協議要比http協議性能更好。通常前置服務器有nginx做靜態伺服器和方向代理足矣,無需使用AJP,不用的資源直接關掉即可。

2.關閉access_log
    外置tomcat服務器server.xml中會輸出access_log日誌,基本沒有什麼價值,可以關閉了。springboot中內置的tomcat默認就是關閉access_log的。

<Valve className="org.apache.catalina.valves.AccessLogValve"  directory="logs"  prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

3.關閉無用的servlet
有些無用的servlet配置也可以去掉,例如未使用jsp可以關掉相關的配置。

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
    <param-name>fork</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>xpoweredBy</param-name>
    <param-value>false</param-value>
  </init-param>
  <load-on-startup>3</load-on-startup>
</servlet>

4.war包與tomcat分離開
不要直接把war包上傳到webapps下發布,應該將war包放到指定的目錄,並在conf/Catalina/localhost目錄下添加相應的配置文件,內容如下。

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="D:\demo.war" />

5.生產環境禁止啓用屬性的reloadable=true
reloadable是需要線程監聽程序文件修改的,然後重新加載web應用,默認值是false(不同版本可能有差異),開發測試可以啓用。

6.連接器connector使用線程池
server.xml文件中有註釋掉的相關配置,合理設置線程池最大值,最小值,最大連接數,超時時間等,可通過jemeter進行壓力測試,沒有放之四海皆準的配置。namePrefix可以自定義方便標識。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-star-"
 maxThreads="200" connectionTimeout="20000" minSpareThreads="10"/>

7.jsp預編譯
我們知道jsp是通過servlet寫出的,所以訪問jsp頁面會進行編譯操作,jsp->java->class,提前把jsp編譯成class可以減少運行時編譯,當然這需要因地制宜。

8.連接器配置protocal
設置協議處理傳入的流量,默認值是HTTP/1.1,tomcat會自動選擇apr(如果存在相關本地庫)或java nio,也可指定協議。

org.apache.coyote.http11.Http11NioProtocol -non blocking Java NIO connector
org.apache.coyote.http11.Http11Nio2Protocol -non blocking Java NIO2 connector
org.apache.coyote.http11.Http11AprProtocol -the APR/native connector.

9.合理設置JAVA_OPTS
相關設置需要結合服務器信息(內存,處理器等),可以打開gc日誌,使用jemeter壓測進行相應調整,適當調整各代大小減少gc。

set "JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx1024m -Xss512k -Xloggc:/star_gc.log -XX:+PrintGCDetails -XX:+UseG1GC"

10.有關session管理
如果有會話管理,可以直接使用tomcat生成的sessionId策略,無需自己再生成一套sessionId,或者實現SessionIdGenerator 定義自己的session管理,儘量減少重複性工作。

11 .增加Tomcat的內存

Tomcat默認使用最大內存爲128M,可以修改 tomcat/bin/Catalina.bat 文件增加其內存。

設置下面語句

set CATALINA_OPTS =-Xms512m –Xmx1024m

12. 禁用AJP協議
  (1)通過禁用AJP協議,達到在集羣的時候提高處理請求的時間。
  (2)啓動tomcat後,不論從剛剛的管理員界面,還是從控制檯上都可以看出,AJP協議是開啓的。我們要做的就是要將此協議禁用,禁用方法:在server.xml中,將 

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

註釋掉,重新啓動tomcat即可
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章