背景:
原來用的是weblogic,後來由於阿里雲服務許多jar包與weblogic不兼容,採用了將不兼容功能及jar部署在tomcat的情況。
隨着這種情況越來越多,不太好管理項目,所以決定用回tomcat。開源的優勢就不說了。下面進行實操。
目的:
weblogic主要主要是性能穩定,不用管太多,一般不會掛掉。tomcat優勢是開源,但需要自己調參數,達到自己滿意的程度。
這次仍然以性能穩定爲目的。
實操:
一、瞭解環境
查看服務器信息
命令:cat /etc/redhat-release
查看服務器內存情況
命令:free -m
有8G內存
查看cpu、內存實時情況
命令:top
查看jvm和tomcat配置情況
jvm和tomcat均採用了默認安裝
tomcat默認使用內存大小
VM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.
JVM在啓動的時候會自動設置Heap size的值,
其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。
可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置
以樹狀結果查看tomcat目錄
tree -L N
參考文檔:https://blog.csdn.net/qq_28602957/article/details/52511529;https://blog.csdn.net/xuehuafeiwu123/article/details/53817161
查看項目位置
[cudo@test1-237 app]$ cat yeah100_svc_local/conf/server.xml
類似的前端地址
文件字符串查找
使用vim查找字符串:https://jingyan.baidu.com/article/219f4bf793a0c2de442d38f1.html
/字符串 ; n下一個匹配;N上一個匹配
VIM中的翻頁命令
向上翻頁:Ctrl + f 或者PageUp鍵
向下翻頁 : Ctrl + b 或者PageDown鍵
f就是forword b就是backward
翻半頁
ctrl-d ctlr-u
d=down u=up
滾一行
ctrl-e ctrl-y
zz 讓光標所在的行居屏幕中央
zt 讓光標所在的行居屏幕最上一行 t=top
zb 讓光標所在的行居屏幕最下一行 b=bottom
跳轉到文件頭(首頁)
輸入冒號(:),打開命令輸入框
輸入命令1,是“一”的阿拉伯數字,不是小寫的L
跳轉到文件尾(尾頁)
輸入冒號(:),打開命令輸入框
輸入命令:$
:u 爲撤回操作(相當於windows ctrl+z)
二、開始優化
參考鏈接:
tomcat7 性能優化 https://blog.csdn.net/wang386851725/article/details/54911568
簡單優化說明:https://www.cnblogs.com/hukey/p/5517314.html
1、線程池
等待先不要設置,經測試會在併發超過maxQueueSize值時被拒絕而訪問失敗。
不設置,默認爲maxQueueSize="Integer.MAX_VALUE" --被執行前線程的排隊數目
2、
禁用 AJP
(如果你服務器沒有使用 Apache)
把下面這一行註釋掉,默認 Tomcat 是開啓的。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
3、內存管理
如果說我們需要經常創建對象啊 而且對象使用完後馬上會被回收的,這種場景年輕代可以適當調大。
根據我們的應用暫時不用調整。
4、修改連接器協議
換爲nio2協議可以更快
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
啓動效果
https://blog.csdn.net/bluetjs/article/details/77449535
protocol:Tomcat 8 設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol
protocol:Tomcat 6 設置 nio 更好:org.apache.coyote.http11.Http11NioProtocol
protocol:Tomcat 8 設置 APR 性能飛快:org.apache.coyote.http11.Http11AprProtocol 更多詳情:《Tomcat 8.5 基於 Apache Portable Runtime(APR)庫性能優化》
採用nio2測試結果
5、啓動壓縮
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"
compression="on"
compressionMinSize="50"
noCompressionUserAgents="gozilla, traviata"
useSendfile="false"
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain" />
https://www.jianshu.com/p/91d619445f8e
參考資料:
Tomcat優化詳細教程:https://www.cnblogs.com/songanwei/p/9441288.html
JVM菜鳥進階高手之路【系列】:https://blog.csdn.net/column/details/17179.html
tomcat8性能優化:https://www.jianshu.com/p/267b6a48c7d8
Linux下Tomcat設置內存解決內存溢出:https://www.cnblogs.com/mountainTop/p/7040668.html
jdk8中tomcat修改配置PermSize爲MetaspaceSize:https://blog.csdn.net/qq924862077/article/details/51540171
GC日誌查看分析:https://blog.csdn.net/timheath/article/details/53053106
查看jdk 線程 日誌:http://www.cnblogs.com/wzhanke/p/4685452.html
認知迭代:Tomcat性能提升的實戰操作,提升60倍以上tomcat性能:https://blog.csdn.net/zhuwenqiancn/article/details/78623822
Tomcat性能調優實戰:http://www.cnblogs.com/scote/p/9565344.html
Tomcat 8.5 基於 Apache Portable Runtime(APR)庫性能優化:https://renwole.com/archives/361
通向架構師的道路(第四天)之Tomcat性能調優-讓小貓飛奔:https://blog.csdn.net/lifetragedy/article/details/7708724
Springboot Tomcat APR模式詳解和實踐:https://www.jianshu.com/p/f716726ba340