国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

鎖屏面試題百日百刷-tomcat優(yōu)化相關(guān)

2021-07-23 22:54 作者:zjlala96  | 我要投稿

====tomcat優(yōu)化經(jīng)驗(yàn)?

優(yōu)化連接配置.這里以tomcat7的參數(shù)配置為例,需要修改conf/server.xml文件,修改連接數(shù),關(guān)閉客 戶端dns查詢。

參數(shù)解釋: URIEncoding=”UTF-8″ :使得tomcat可以解析含有中文名的文件的url,真方便,不像apache里還有搞 個(gè)mod_encoding,還要手工編譯 maxSpareThreads : 如果空閑狀態(tài)的線程數(shù)多于設(shè)置的數(shù)目,則將這些線程中止,減少這個(gè)池中的線程總 數(shù)。minSpareThreads : 最小備用線程數(shù),tomcat啟動(dòng)時(shí)的初始化的線程數(shù)。 enableLookups : 這個(gè)功效和Apache中的HostnameLookups一樣,設(shè)為關(guān)閉。 connectionTimeout : connectionTimeout為網(wǎng)絡(luò)連接超時(shí)時(shí)間毫秒數(shù)。 maxThreads : maxThreads Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示Tomcat可創(chuàng)建的最大 的線程數(shù),即最大并發(fā)數(shù)。 acceptCount : acceptCount是當(dāng)線程數(shù)達(dá)到maxThreads后,后續(xù)請(qǐng)求會(huì)被放入一個(gè)等待隊(duì)列,這個(gè) acceptCount是這個(gè)隊(duì)列的大小,如果這個(gè)隊(duì)列也滿了,就直接refuse connection maxProcessors與minProcessors : 在 Java中線程是程序運(yùn)行時(shí)的路徑,是在一個(gè)程序中與其它控制 線程無(wú)關(guān)的、能夠獨(dú)立運(yùn)行的代碼段。它們共享相同的地址空間。多線程幫助程序員寫出CPU最 大利用率的高 效程序,使空閑時(shí)間保持最低,從而接受更多的請(qǐng)求。 通常Windows是1000個(gè)左右,Linux是2000個(gè)左右。 useURIValidationHack: 我們來(lái)看一下tomcat中的一段源碼:

【security】

if (connector.getUseURIValidationHack()) {

String uri = validate(request.getRequestURI());

if (uri == null) {

res.setStatus(400);

res.setMessage(“Invalid URI”);

throw new IOException(“Invalid URI”);

} else {

req.requestURI().setString(uri);

// Redoing the URI decoding

req.decodedURI().duplicate(req.requestURI());

req.getURLDecoder().convert(req.decodedURI(), true);

可以看到如果把useURIValidationHack設(shè)成”false”,可以減少它對(duì)一些url的不必要的檢查從而減省開

銷。

enableLookups=”false” : 為了消除DNS查詢對(duì)性能的影響我們可以關(guān)閉DNS查詢,方式是修改

server.xml文件中的enableLookups參數(shù)值。

disableUploadTimeout :類似于Apache中的keeyalive一樣

給Tomcat配置gzip壓縮(HTTP壓縮)功能

compression=”on” compressionMinSize=”2048″

compressableMimeType=”text/html,text/xml,text/JavaScript,text/css,text/plain”

HTTP 壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,在客戶端請(qǐng)求網(wǎng)頁(yè)后,從服務(wù)器端將網(wǎng)頁(yè)文件壓縮,

再下載到客戶端,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。相對(duì)于普通的瀏覽過(guò)程HTML,CSS,javascript ,

Text ,它可以節(jié)省40%左右的流量。更為重要的是,它可以對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP

, Servlet,SHTML等輸出的網(wǎng)頁(yè)也能進(jìn)行壓縮,壓縮效率驚人。

1)compression=”on” 打開壓縮功能

2)compressionMinSize=”2048″ 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB

3)noCompressionUserAgents=”gozilla, traviata” 對(duì)于以下的瀏覽器,不啟用壓縮

4)compressableMimeType=”text/html,text/xml” 壓縮類型

最后不要忘了把8443端口的地方也加上同樣的配置,因?yàn)槿绻覀冏遠(yuǎn)ttps協(xié)議的話,我們將會(huì)用到8443端 口這個(gè)段的配置:

<!–enable tomcat ssl–>

<Connector port=”8443″ protocol=”HTTP/1.1″

URIEncoding=”UTF-8″ minSpareThreads=”25″ maxSpareThreads=”75″

enableLookups=”false” disableUploadTimeout=”true” connectionTimeout=”20000″

acceptCount=”300″ maxThreads=”300″ maxProcessors=”1000″ minProcessors=”5″

useURIValidationHack=”false”

compression=”on” compressionMinSize=”2048″

compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”

SSLEnabled=”true”

scheme=”https” secure=”true”

clientAuth=”false” sslProtocol=”TLS”

keystoreFile=”d:/tomcat2/conf/shnlap93.jks” keystorePass=”aaaaaa”/>

?

====tomcat內(nèi)存調(diào)優(yōu)?

內(nèi)存方式的設(shè)置是在catalina.sh中,調(diào)整一下JAVA_OPTS變量即可,因?yàn)楹竺娴膯?dòng)參數(shù)會(huì)把

JAVA_OPTS作為JVM的啟動(dòng)參數(shù)來(lái)處理。

具體設(shè)置如下:

JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -

XX:SurvivorRatio=4"

其各項(xiàng)參數(shù)如下:

-Xmx3550m:設(shè)置JVM最大可用內(nèi)存為3550M。

-Xms3550m:設(shè)置JVM促使內(nèi)存為3550m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。

-Xmn2g:設(shè)置年輕代大小為2G。整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大

小為64m,所以增大年輕代后,將會(huì)減小年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆

的3/8。

-Xss128k:設(shè)置每個(gè)線程的堆棧大小。JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為 256K。更具應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無(wú)限生成,經(jīng)驗(yàn)值在3000~5000左右。

-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū))與年老代的比值(除去持久代)。設(shè)置為

4,則年輕代與年老代所占比值為1:4,年輕代占整個(gè)堆棧的1/5

-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,則兩個(gè)Survivor區(qū) 與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6

-XX:MaxPermSize=16m:設(shè)置持久代大小為16m。

-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過(guò)Survivor

區(qū),直接進(jìn)入年老代。對(duì)于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)

象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概率。

?

====Tomcat中垃圾回收策略調(diào)優(yōu)?

垃圾回收的設(shè)置在catalina.sh中,調(diào)整JAVA_OPTS變量。

具體設(shè)置如下:

JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:+UseParallelGC -

XX:MaxGCPauseMillis=100"

具體的垃圾回收策略及相應(yīng)策略的各項(xiàng)參數(shù)如下:

串行收集器(JDK1.5以前主要的回收方式)?

-XX:+UseSerialGC:設(shè)置串行收集器

并行收集器(吞吐量?jī)?yōu)先)?

示例:

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -

XX:MaxGCPauseMillis=100

-XX:+UseParallelGC:選擇垃圾收集器為并行收集器。此配置僅對(duì)年輕代有效。即上述配置下,年輕代使

用并發(fā)收集,而年老代仍舊使用串行收集。

-XX:ParallelGCThreads=20:配置并行收集器的線程數(shù),即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最

好配置與處理器數(shù)目相等。

-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對(duì)年老代并行收集

-XX:MaxGCPauseMillis=100:設(shè)置每次年輕代垃圾回收的最長(zhǎng)時(shí)間,如果無(wú)法滿足此時(shí)間,JVM會(huì)自動(dòng)調(diào)

整年輕代大小,以滿足此值。

-XX:+UseAdaptiveSizePolicy:設(shè)置此選項(xiàng)后,并行收集器會(huì)自動(dòng)選擇年輕代區(qū)大小和相應(yīng)的 Survivor區(qū)比例,以達(dá)到目標(biāo)系統(tǒng)規(guī)定的最低相應(yīng)時(shí)間或者收集頻率等,此值建議使用并行收集器時(shí),一直 打開。

并發(fā)收集器(響應(yīng)時(shí)間優(yōu)先)?

示例:java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC

-XX:+UseConcMarkSweepGC:設(shè)置年老代為并發(fā)收集。測(cè)試中配置這個(gè)以后,-XX:NewRatio=4的配置失

效了,原因不明。所以,此時(shí)年輕代大小最好用-Xmn設(shè)置。

-XX:+UseParNewGC: 設(shè)置年輕代為并行收集??膳cCMS收集同時(shí)使用。JDK5.0以上,JVM會(huì)根據(jù)系統(tǒng)配置

自行設(shè)置,所以無(wú)需再設(shè)置此值。

-XX:CMSFullGCsBeforeCompaction:由于并發(fā)收集器不對(duì)內(nèi)存空間進(jìn)行壓縮、整理,所以運(yùn)行一段時(shí)間

以后會(huì)產(chǎn)生“碎片”,使得運(yùn)行效率降低。此值設(shè)置運(yùn)行多少次GC以后對(duì)內(nèi)存空間進(jìn)行壓縮、整理。

-XX:+UseCMSCompactAtFullCollection:打開對(duì)年老代的壓縮??赡軙?huì)影響性能,但是可以消除碎片

?

====Tomcat一個(gè)請(qǐng)求的完整過(guò)程

配置如下:

Ng:(nginx)

upstream yy_001{

server 10.99.99.99:8080;

server 10.99.99.100:8080;

hash $**;

healthcheck_enabled;

healthcheck_delay 3000;

healthcheck_timeout 1000;

healthcheck_failcount 2;

healthcheck_send 'GET /healthcheck.html HTTP/1.0' 'Host: wo.com'

'Connection: close';

}

server {

include base.conf;

server_name wo.de.tian;

...

location /yy/ {

proxy_pass http://yy_001;

}

首先 dns 解析 wo.de.tian機(jī)器,一般是ng服務(wù)器ip地址

然后 ng根據(jù)server的配置,尋找路徑為 yy/的機(jī)器列表,ip和端口

最后 選擇其中一臺(tái)機(jī)器進(jìn)行訪問(wèn)—->下面為詳細(xì)過(guò)程

1) 請(qǐng)求被發(fā)送到本機(jī)端口8080,被在那里偵聽的Coyote HTTP/1.1 Connector獲得

2) Connector把該請(qǐng)求交給它所在的Service的Engine來(lái)處理,并等待來(lái)自Engine的回應(yīng)

3) Engine獲得請(qǐng)求localhost/yy/index.jsp,匹配它所擁有的所有虛擬主機(jī)Host

4) Engine匹配到名為localhost的Host(即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī))

5) localhost Host獲得請(qǐng)求/yy/index.jsp,匹配它所擁有的所有Context

6) Host匹配到路徑為/yy的Context(如果匹配不到就把該請(qǐng)求交給路徑名為”“的Context去處理)

7) path=”/yy”的Context獲得請(qǐng)求/index.jsp,在它的mapping table中尋找對(duì)應(yīng)的servlet

8) Context匹配到URL PATTERN為*.jsp的servlet,對(duì)應(yīng)于JspServlet類

9) 構(gòu)造HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,作為參數(shù)調(diào)用JspServlet的doGet

或doPost方法

10)Context把執(zhí)行完了之后的HttpServletResponse對(duì)象返回給Host

11)Host把HttpServletResponse對(duì)象返回給Engine

12)Engine把HttpServletResponse對(duì)象返回給Connector

13)Connector把HttpServletResponse對(duì)象返回給客戶browser


更多面試題或?qū)W習(xí)資源可查看我主頁(yè)或評(píng)論獲取


鎖屏面試題百日百刷-tomcat優(yōu)化相關(guān)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
金乡县| 威宁| 惠安县| 华池县| 南木林县| 新沂市| 图们市| 奉化市| 长汀县| 永修县| 兴安盟| 湟源县| 双桥区| 崇州市| 新密市| 辽阳市| 洛扎县| 治县。| 阿拉善右旗| 红安县| 娄烦县| 犍为县| 九江县| 云林县| 蒲江县| 吉隆县| 济阳县| 岳普湖县| 张家界市| 廊坊市| 枝江市| 巍山| 沾化县| 呼图壁县| 郁南县| 深州市| 潜山县| 开阳县| 承德县| 沭阳县| 开远市|