高併發環境下如何優化Tomcat性能?看完你就懂了!

寫在前面

Tomcat作為最常用的Java Web服務器,隨著併發量越來越高,Tomcat的性能會急劇下降,那有沒有什麼方法來優化Tomcat在高併發環境下的性能呢?

Tomcat運行模式

Tomcat的運行模式有3種。

1.bio模式

默認的模式,性能非常低下,沒有經過任何優化處理和支持。

2.nio模式

利用java的異步io護理技術,noblocking IO技術。要想運行在該模式下,則直接修改server.xml裡的Connector節點,修改protocol為如下配置。

<code>

protocol

=

"org.apache.coyote.http11.Http11NioProtocol"

/<code>

重啟Tomcat後,就可以生效。

3.apr模式

安裝起來最困難,但是從操作系統級別來解決異步的IO問題,大幅度的提高性能。此種模式下,必須要安裝apr和native,直接啟動就支持apr。如nio修改模式,修改protocol為org.apache.coyote.http11.Http11AprProtocol,如下所示。

<code> 

protocol

=

"org.apache.coyote.http11.Http11AprProtocol"

/<code>

Tomcat併發優化

安裝APR

<code>[root@binghe ~] 
[root@binghe ~] 
[root@binghe ~] 
[root@binghe native] 
[root@binghe native]/<code>

安裝完成之後 會出現如下提示信息

<code>Libraries have been installed 

in

: /usr/

local

/apr/lib/<code>

安裝成功後還需要對tomcat設置環境變量,方法是在catalina.sh文件中增加1行:

在這段代碼下面添加:

高併發環境下如何優化Tomcat性能?看完你就懂了!

修改server.xml的配置,如下所示。

<code>

protocol

=”org.apache.coyote.http11.Http11AprProtocol”/<code>

啟動tomcat之後,查看日誌,如下所示。

<code>

more

 

TOMCAT_HOME/logs/catalina.out

2020

-04

-17

 

22

:34:56

 

org.apache.catalina.core.AprLifecycleListener

 

init

INFO:

 

Loaded

 

APR

 

based

 

Apache

 

Tomcat

 

Native

 

library

 

1.1

.31

 

using

 

APR

 

version

 

1.3

.9

.

2020

-04

-17

 

22

:34:56

 

org.apache.catalina.core.AprLifecycleListener

 

init

INFO:

 

APR

 

capabilities:

 

IPv6

 

[true],

 

sendfile

 

[true],

 

accept

 

filters

 

[false],

 

random

 

[true].

2020

-04

-17

 

22

:34:56

 

org.apache.catalina.core.AprLifecycleListener

 

initializeSSL

INFO:

 

OpenSSL

 

successfully

 

initialized

 

(OpenSSL

 

1.0

.1e

 

11

 

Feb

 

2013

)

2020

-04

-17

 

22

:34:58

 

AM

 

org.apache.coyote.AbstractProtocol

 

init

INFO:

 

Initializing

 

ProtocolHandler

 

[“http-apr-8080”]

2020

-04

-17

 

22

:34:58

 

AM

 

org.apache.coyote.AbstractProtocol

 

init

INFO:

 

Initializing

 

ProtocolHandler

 

[“ajp-apr-8009”]

2020

-04

-17

 

22

:34:58

 

AM

 

org.apache.catalina.startup.Catalina

 

load

INFO:

 

Initialization

 

processed

 

in

 

1125

 

ms

/<code>

Tomcat優化

1.JVM 調優

在TOMCAT_HOME/bin/catalina.sh 增加如下語句,具體數值視情況而定。添加到上面CATALINA_OPTS的後面即可,如下所示。

<code>

JAVA_OPTS

=-Xms512m -Xmx1024m -XX:PermSize=

512

M -XX:MaxNewSize=

1024

m -XX:MaxPermSize=

1024

m/<code>

參數詳解

  • -Xms:JVM初始化堆內存大小。
  • -Xmx:JVM堆的最大內存。
  • -Xss:線程棧大小。
  • -XX:PermSize:JVM非堆區初始內存分配大小。
  • -XX:MaxPermSize:JVM非堆區最大內存。

建議和注意事項:

-Xms和-Xmx選項設置為相同堆內存分配,以避免在每次GC 後調整堆的大小,堆內存建議佔內存的60%~80%;非堆內存是不可回收內存,大小視項目而定;線程棧大小推薦256k。

32G內存配置如下:

<code>

JAVA_OPTS

=-Xms20480m -Xmx20480m -Xss1024K -XX:PermSize=

512

m -XX:MaxPermSize=

2048

m/<code>

2.關閉DNS反向查詢

<code>enableLookups=”false”/<code>

3.優化tomcat參數

在server.xml文件中進行如下配置。

<code><Connector>/<code>

寫在最後

最後,附上併發編程需要掌握的核心技能知識圖,祝大家在學習併發編程時,少走彎路。

高併發環境下如何優化Tomcat性能?看完你就懂了!


分享到:


相關文章: