1)
作用:Jetty 特性:易用性,可擴(kuò)展性,,易嵌入性
2)
3) etc:該路徑用于存放Jetty的配置文件 examples:該路徑用于存放Jetty的示例,。 legal:該路徑用于存放該項(xiàng)目的Lisence信息。 lib:該路徑用于存放運(yùn)行Jetty必需的J缸文件,。 modules:該路徑用于存放Jetty的模塊,,包括API文檔。 patches:包含一些補(bǔ)丁說明,。 pom.xm1:是Jetty的build文件,,該文件不是Ant的build文件,而是mavaen2的build文件,。 project-site:包含Jetty的網(wǎng)站的必需的樣式文件,。 readme.txt:包含最基本的使用信息。 start.jar:啟動(dòng)Jetty的啟動(dòng)文件,。 version.txt:Jetty版本更新日志的簡單版本,。
webapps:
webapps-plus:
4)
Tomcat和Jetty都是一種Servlet引擎,,他們都支持標(biāo)準(zhǔn)的servlet規(guī)范和JavaEE的規(guī)范,。
1.架構(gòu)比較 Jetty的架構(gòu)比Tomcat的更為簡單 Jetty的架構(gòu)是基于Handler來實(shí)現(xiàn)的,主要的擴(kuò)展功能都可以用Handler來實(shí)現(xiàn),,擴(kuò)展簡單,。 Tomcat的架構(gòu)是基于容器設(shè)計(jì)的,進(jìn)行擴(kuò)展是需要了解Tomcat的整體設(shè)計(jì)結(jié)構(gòu),,不易擴(kuò)展,。
2. Jetty和Tomcat性能方面差異不大 Jetty可以同時(shí)處理大量連接而且可以長時(shí)間保持連接,適合于web聊天應(yīng)用等等。 Jetty的架構(gòu)簡單,,因此作為服務(wù)器,,Jetty可以按需加載組件,,減少不需要的組件,,減少了服務(wù)器內(nèi)存開銷,從而提高服務(wù)器性能,。 Jetty默認(rèn)采用NIO結(jié)束在處理I/O請(qǐng)求上更占優(yōu)勢,,在處理靜態(tài)資源時(shí),性能較高 Tomcat適合處理少數(shù)非常繁忙的鏈接,,也就是說鏈接生命周期短的話,,Tomcat的總體性能更高。 Tomcat默認(rèn)采用BIO處理I/O請(qǐng)求,,在處理靜態(tài)資源時(shí),,性能較差。 3.其它比較 Jetty的應(yīng)用更加快速,,修改簡單,,對(duì)新的Servlet規(guī)范的支持較好。 Tomcat目前應(yīng)用比較廣泛,,對(duì)JavaEE和Servlet的支持更加全面,,很多特性會(huì)直接集成進(jìn)來。
5) 一,、一般調(diào)優(yōu)的基本過程 1.明了需要調(diào)優(yōu)的系統(tǒng)架構(gòu) 2.設(shè)定性能調(diào)優(yōu)的目標(biāo) 3.明了目標(biāo)當(dāng)前的性能情況 4.找出目前的性能瓶頸的所在 5.解決引起性能瓶頸的根本問題 6.重復(fù)以上過程直到達(dá)到設(shè)定目標(biāo)性能為止 二,、性能指標(biāo): 崩潰點(diǎn):同時(shí)多少并發(fā)的時(shí)候,服務(wù)器Down掉,? 吞吐量:多少人一起來,,都沒問題? 并發(fā)數(shù):每秒能處理多少人,? 響應(yīng)時(shí)間:每人需要等待的時(shí)間多長,? 三、調(diào)優(yōu)點(diǎn): 1.硬件配置優(yōu)化: 虛擬機(jī) 物理機(jī)
CPU
2,、系統(tǒng)優(yōu)化(Linux) 已經(jīng)根據(jù)門戶的方式去優(yōu)化,。
3.JVM參數(shù)優(yōu)化: -Xms:設(shè)置jvm內(nèi)存的初始大小 -Xmx:設(shè)置jvm內(nèi)存的最大值
-Xmn:設(shè)置新域的大小(這個(gè)似乎只對(duì) -Xss:設(shè)置每個(gè)線程的堆棧大小(也就是說,在相同物理內(nèi)存下,,減小這個(gè)值能生成更多的線程)
-XX:NewRatio -XX:NewSize:設(shè)置新域的初始值
-XX:MaxNewSize -XX:PermSize:設(shè)置永久域的初始值 -XX:MaxPermSize:設(shè)置永久域的最大值
-XX:SurvivorRatio=n:設(shè)置新域中Eden區(qū)與兩個(gè)Survivor區(qū)的比值,。(Eden區(qū)主要是用來存放新生的對(duì)象,,而兩個(gè)
監(jiān)控內(nèi)存
常見的錯(cuò)誤
java.lang.OutOfMemoryError相信很多開發(fā)人員都用到過,這個(gè)主要就是JVM參數(shù)沒有配好引起的,但是這種錯(cuò)誤又分兩種:java.lang.OutOfMemoryError:
java.lang.OutOfMemoryError:
4.容器優(yōu)化: a.線程池
線程池線程資源大小確定了服務(wù)器的服務(wù)能力 默認(rèn)大小不一定能滿足生產(chǎn)環(huán)境 線程分配方式?jīng)Q定了服務(wù)器的資源利用效率 固定線程數(shù)處理多任務(wù),代表:JDK的ThreadPoolExecutor 以最大線程數(shù)為限處理多任務(wù),代表:Jetty自帶QueuedThreadPool
Work-stealing
maxThreads:表示最多同時(shí)處理的連接數(shù),。應(yīng)該將線程數(shù)(最大線程數(shù))設(shè)置比最大預(yù)期負(fù)載(同時(shí)并發(fā)的點(diǎn)擊)多25%(經(jīng)驗(yàn)規(guī)則)(低配置用戶可通過降低maxThreads并同時(shí)增大 acceptCount值來保證系統(tǒng)的穩(wěn)定)。 acceptCount:當(dāng)同時(shí)連接的人數(shù)達(dá)到maxThreads時(shí),,還可以接收排隊(duì)的連接,。 minSpareThread:指“啟動(dòng)以后,總是保持該數(shù)量的線程空閑等待”,;設(shè)置比預(yù)期負(fù)載多25%,。 maxSpareThread:指“如果超過了minSpareThread,然后總是保持該數(shù)量的線程空閑等待”,;設(shè)置比預(yù)期負(fù)載多25%,。 其中主要修改兩個(gè)參數(shù)maxThreads和acceptCount值。增加maxThreads,,減少acceptCount值有利縮短系統(tǒng)的響應(yīng)時(shí)間,。但是maxThreads和acceptCount的總和最高值不能超過6000,而且 maxThreads過大會(huì)增加CPU和內(nèi)存消耗,,故低配置用戶可通過降低maxThreads并同時(shí)增大acceptCount值來保證系統(tǒng)的穩(wěn)定,。 connectionTimeout:連接超時(shí),最大超時(shí)時(shí)間,,當(dāng)響應(yīng)速度慢的時(shí)候,,通過調(diào)整該參數(shù),來平衡正確率和服務(wù)器資源的回收,。
b.Connectors 選擇Connector時(shí),,需要考慮應(yīng)用自身的特點(diǎn),例如股票,、聊天室.
TCP
Ajp13SocketConnector
Java
Acceptors
默認(rèn)值是
對(duì)于NIO
maxIdleTime
典型值 對(duì)AJP來說一般設(shè)置為-1,,表示連接需要一直保持
LowResourcesMaxIdleTime 一般設(shè)置值應(yīng)該<=maxIdleTime
lowResourcesConnections
默認(rèn)值是
AcceptQueueSize
SoLingerTime
ResolveNames
c.JVM Jetty性能調(diào)優(yōu)點(diǎn)-JVM
JVM參數(shù)調(diào)整主要涉及兩個(gè)方面
堆/棧內(nèi)存大小調(diào)整
Xmx/xms
xmn
-XX:MaxPermSize
垃圾分配回收算法考慮暫停時(shí)間、吞吐量選擇不同算法 串行/并行/并發(fā)收集
d.Content
動(dòng)態(tài)內(nèi)容不會(huì)被cache
maxCacheSize
maxCachedFileSize
maxCachedFiles
useFileMappedBuffer 可以通過etc/webdefault.xml配置
e.冗余組件去除
去除多余的Connector
關(guān)閉不必要的服務(wù)
5.代碼優(yōu)化: 在高峰期,,減去日志記錄的操作,或者把日志暫時(shí)先緩存起來,,使用異步處理的方式,。 減少一些數(shù)據(jù)庫操作。
減少NC
6.數(shù)據(jù)庫優(yōu)化: 索引 視圖
7.其他: 壓縮css,js,圖片 使用瀏覽器緩存 CDN加速 分布式緩存服務(wù)器 集群,、負(fù)載均衡
三.調(diào)優(yōu)策略: a.關(guān)鍵點(diǎn),,找到瓶頸,給瓶頸分配更多的資源,,或者減輕其工作量。
四,、調(diào)優(yōu)原則
a.每臺(tái)服務(wù)器,,所能承載的參數(shù),都會(huì)有差異,,尤其是內(nèi)存 b.每種服務(wù)所需的計(jì)算資源各不相同,要根據(jù)服務(wù)的偏向不同,,而去把最好的資源,,分配到最需要的地方 c.性能優(yōu)化,是永恒的話題,,沒有永久最優(yōu)解,,只能查出目前最優(yōu)解,是一個(gè)不斷優(yōu)化的過程。
五,、調(diào)優(yōu)技巧 1.粗狂的掃點(diǎn)與詳細(xì)的指標(biāo)相結(jié)合,,盡量讓驗(yàn)證調(diào)優(yōu)的過程更敏捷,讓主要的指標(biāo)穩(wěn)定下來,在確定指標(biāo)前,,再使用詳細(xì)的方式去測出各種指標(biāo),。 2.分輪測試,在測試結(jié)果中,,找出各個(gè)參數(shù)的規(guī)律,。為調(diào)優(yōu)提供指導(dǎo)數(shù)據(jù)。 3.在程序增加計(jì)數(shù)器,,驗(yàn)證LR的請(qǐng)求次數(shù),。 4.在程序每個(gè)步驟,增加多一些時(shí)間,,檢查下,,到底是卡在哪個(gè)步驟,,尤其是操作數(shù)據(jù)庫前后。
|
|