日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
tomcat性能優(yōu)化

tomcat默認(rèn)參數(shù)是為開(kāi)發(fā)環(huán)境制定,而非適合生產(chǎn)環(huán)境,尤其是內(nèi)存和線程的配置,默認(rèn)都很低,容易成為性能瓶頸,本篇文章重點(diǎn)為大家講解一下tomcat 性能優(yōu)化。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的南召網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

Tomcat連接器協(xié)議優(yōu)化

Tomcat 連接器的三種方式: bio、nio 和 apr,三種方式性能差別很大,apr 的性能最優(yōu), bio 的性能最差。而 Tomcat 7 使用的 Connector 默認(rèn)就啟用的 Apr 協(xié)議,但需要系統(tǒng)安裝 Apr 庫(kù),否則就會(huì)使用 bio 方式。

1、nio如何配置

進(jìn)入到tomcat的server.xml找到connector。更改其中的protocol屬性即可。

2、apr如何配置

apr的配置需要安裝依賴

yum -y install openssl-devel
yum -y install apr-devel

安裝之后,去tomcat官網(wǎng)下載native組件,native可以看成是tomcat和apr交互的中間環(huán)節(jié),下載地址是:

http://tomcat.apache.org/download-native.cgi 這里下載最新的版本1.2.10解壓并安裝

tar -xvzf tomcat-native-1.2.10-src.tar.gz
cd tomcat-native-1.2.10-src/native/
./configure

至此apr安裝成功,進(jìn)入server.xml。更改協(xié)議將默認(rèn)的protocol=”HTTP/1.1″修改為protocol=”

org.apache.coyote.http11.Http11AprProtocol”。

Tomcat配置文件方面的優(yōu)化

配置文件方面是我們主要的tomcat優(yōu)化的地方。我們將常見(jiàn)的優(yōu)化直接在配置文件中放置。

1、connectionTimeout=”30000″:網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常可設(shè)置為 30000 毫秒,可根據(jù)檢測(cè)實(shí)際情況,適當(dāng)修改

2、enableLookups=”false”:是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true 或 false,如果設(shè)置為false,則直接返回IP地址,為了提高處理能力,應(yīng)設(shè)置為 false。

3、disableUploadTimeout=”false”:上傳時(shí)是否使用超時(shí)機(jī)制。

4、connectionUploadTimeout=”150000″:上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以 使Servlet有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。

5、acceptCount=”300″:指定當(dāng)所有可以 使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為100個(gè)。

6、keepAliveTimeout=”120000″:長(zhǎng)連接最大保持時(shí)間(毫秒),表示在下次請(qǐng)求過(guò)來(lái)之前,Tomcat 保持該連接多久,默認(rèn)是使用connectionTimeout 時(shí)間,-1 為不限制超時(shí)。

7、maxKeepAliveRequests=”1″:表示在服務(wù)器關(guān)閉之前,該連接最大支持的請(qǐng)求數(shù)。超過(guò)該請(qǐng)求數(shù)的連接也將被關(guān)閉,1表示禁用,-1表示不限制個(gè)數(shù),默認(rèn)100個(gè),一般設(shè)置在100~200之間。

8、compression=”on”:是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行 GZIP 壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為off,壓縮數(shù)據(jù)后可以有效的減少頁(yè)面的大小,一般可以減小1/3左右,節(jié)省帶寬。

9、compressionMinSize=”2048″:表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開(kāi)啟了壓縮功能,默認(rèn)值就是2048。

10、compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png”:壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。

最大支持的請(qǐng)求數(shù)。超過(guò)該請(qǐng)求數(shù)的連接也將被關(guān)閉,1表示禁用,-1表示不限制個(gè)數(shù),默認(rèn)100個(gè),一般設(shè)置在100~200之間。compression=”on” 為不限制超時(shí)。maxkeepaliverequests=”1″ 時(shí)間,-1=”” connectiontimeout=”30000″ 保持該連接多久,默認(rèn)是使用=”” 長(zhǎng)連接最大保持時(shí)間(毫秒),表示在下次請(qǐng)求過(guò)來(lái)之前,tomcat=”” 指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為100個(gè)。keepalivetimeout=”120000″ 上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使servlet有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。acceptcount=”300″ 上傳時(shí)是否使用超時(shí)機(jī)制。connectionuploadtimeout=”150000″ false。disableuploadtimeout=”false” false,如果設(shè)置為false,則直接返回ip地址,為了提高處理能力,應(yīng)設(shè)置為=”” 或=”” 是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true=”” 毫秒,可根據(jù)檢測(cè)實(shí)際情況,適當(dāng)修改enablelookups=”false” 30000=”” 表示永不超時(shí),這樣設(shè)置有隱患的。通??稍O(shè)置為=”” 0=”” 網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為=”” uriencoding=”UTF-8″ protocol=”HTTP/1.1″ port=”8080″ executor=”tomcatThreadPool”>

Tomcat的jvm方面的優(yōu)化

找到catalina.sh在文件開(kāi)頭增加如下設(shè)置:JAVA_OPTS=’-Xms256m-Xmx512m’

-Xms:表示 Java 初始化堆的大小,-Xms 與-Xmx 設(shè)成一樣的值,避免 JVM 反復(fù)重新申請(qǐng)內(nèi)存,導(dǎo)致性能大起大落,默認(rèn)值為物理內(nèi)存的 1/64,默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存小于 40% 時(shí),JVM 就會(huì)增大堆直到 -Xmx 的最大限制。

-Xmx:表示最大 Java 堆大小,當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,并且導(dǎo)致應(yīng)用服務(wù)崩潰,因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。如何知道我的 JVM 能夠使用最大值,使用 java -Xmx512M -version 命令來(lái)進(jìn)行測(cè)試,然后逐漸的增大 512 的值,如果執(zhí)行正常就表示指定的內(nèi)存大小可用,否則會(huì)打印錯(cuò)誤信息,默認(rèn)值為物理內(nèi)存的 1/4,默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存大于 70% 時(shí),JVM 會(huì)減少堆直到-Xms 的最小限制。

-Xss:表示每個(gè) Java 線程堆棧大小,JDK 5.0 以后每個(gè)線程堆棧大小為 1M,以前每個(gè)線程堆棧大小為 256K。根據(jù)應(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 左右。一般小的應(yīng)用, 如果棧不是很深, 應(yīng)該是128k 夠用的,大的應(yīng)用建議使用 256k 或 512K,一般不易設(shè)置超過(guò) 1M,要不然容易出現(xiàn)out ofmemory。這個(gè)選項(xiàng)對(duì)性能影響比較大,需要嚴(yán)格的測(cè)試。

-XX:NewSize:設(shè)置新生代內(nèi)存大小。

-XX:MaxNewSize:設(shè)置最大新生代新生代內(nèi)存大小

-XX:PermSize:設(shè)置持久代內(nèi)存大小

-XX:MaxPermSize:設(shè)置最大值持久代內(nèi)存大小,永久代不屬于堆內(nèi)存,堆內(nèi)存只包含新生代和老年代。

-XX:+AggressiveOpts:作用如其名(aggressive),啟用這個(gè)參數(shù),則每當(dāng) JDK 版本升級(jí)時(shí),你的 JVM 都會(huì)使用最新加入的優(yōu)化技術(shù)(如果有的話)。

-XX:+UseBiasedLocking:?jiǎn)⒂靡粋€(gè)優(yōu)化了的線程鎖,我們知道在我們的appserver,每個(gè)http請(qǐng)求就是一個(gè)線程,有的請(qǐng)求短有的請(qǐng)求長(zhǎng),就會(huì)有請(qǐng)求排隊(duì)的現(xiàn)象,甚至還會(huì)出現(xiàn)線程阻塞,這個(gè)優(yōu)化了的線程鎖使得你的appserver內(nèi)對(duì)線程處理自動(dòng)進(jìn)行最優(yōu)調(diào)配。

-XX:+UseConcMarkSweepGC:設(shè)置年老代為并發(fā)收集,即 CMS gc,這一特性只有 jdk1.5后續(xù)版本才具有的功能,它使用的是 gc 估算觸發(fā)和 heap 占用觸發(fā)。我們知道頻頻繁的 GC 會(huì)造面 JVM的大起大落從而影響到系統(tǒng)的效率,因此使用了 CMS GC 后可以在 GC 次數(shù)增多的情況下,每次 GC 的響應(yīng)時(shí)間卻很短,比如說(shuō)使用了 CMSGC 后經(jīng)過(guò) jprofiler 的觀察,GC 被觸發(fā)次數(shù)非常多,而每次 GC 耗時(shí)僅為幾毫秒。

-XX:+UseParNewGC:對(duì)新生代采用多線程并行回收,這樣收得快,注意最新的 JVM 版本,當(dāng)使用 -XX:+UseConcMarkSweepGC 時(shí),-XX:UseParNewGC 會(huì)自動(dòng)開(kāi)啟。因此,如果年輕代的并行 GC 不想開(kāi)啟,可以通過(guò)設(shè)置 -XX:-UseParNewGC 來(lái)關(guān)掉。

-XX:MaxTenuringThreshold:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則新生代對(duì)象不經(jīng)過(guò) Survivor 區(qū),直接進(jìn)入老年代。對(duì)于老年代比較多的應(yīng)用(需要大量常駐內(nèi)存的應(yīng)用),可以提高效率。如果將此值設(shè)置為一 個(gè)較大值,則新生代對(duì)象會(huì)在 Survivor 區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象在新生代的存活時(shí)間,增加在新生代即被回收的概率,減少Full GC的頻率,這樣做可以在某種程度上提高服務(wù)穩(wěn)定性。該參數(shù)只有在串行 GC 時(shí)才有效,這個(gè)值的設(shè)置是根據(jù)本地的 jprofiler 監(jiān)控后得到的一個(gè)理想的值,不能一概而論原搬照抄。

-XX:+

UseCMSCompactAtFullCollection:在使用 concurrent gc 的情況下,防止 memoryfragmention,對(duì) live object 進(jìn)行整理,使 memory 碎片減少。

-XX:+UseFastAccessorMethods:使用 get,set 方法轉(zhuǎn)成本地代碼,原始類型的快速優(yōu)化。

-Djava.awt.headless=true:這個(gè)參數(shù)一般我們都是放在最后使用的,這全參數(shù)的作用是這樣的,有時(shí)我們會(huì)在我們的 J2EE 工程中使用一些圖表工具如:jfreechart,用于在 web 網(wǎng)頁(yè)輸出 GIF/JPG 等流,在 winodws 環(huán)境下,一般我們的 app server 在輸出圖形時(shí)不會(huì)碰到什么問(wèn)題,但是在linux/unix 環(huán)境下經(jīng)常會(huì)碰到一個(gè) exception 導(dǎo)致你在 winodws 開(kāi)發(fā)環(huán)境下圖片顯示的好好可是在 linux/unix 下卻顯示不出來(lái),因此加上這個(gè)參數(shù)以免避這樣的情況出現(xiàn)。

-Xmn:新生代的內(nèi)存空間大小,注意:此處的大小是(eden+ 2 survivor space)。與 jmap -heap 中顯示的 New gen 是不同的。整個(gè)堆大小 = 新生代大小 + 老生代大小 + 永久代大小。在保證堆大小不變的情況下,增大新生代后,將會(huì)減小老生代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的 3/8。

-XX:NewRatio:年輕代(包括 Eden 和兩個(gè) Survivor 區(qū))與年老代的比值(除去持久代),-XX:NewRatio=4 表示年輕代與年老代所占比值為 1:4,年輕代占整個(gè)堆棧的 1/5,Xms=Xmx 并且設(shè)置了 Xmn 的情況下,該參數(shù)不需要進(jìn)行設(shè)置。

-XX:SurvivorRatio:Eden 區(qū)與 Survivor 區(qū)的大小比值,設(shè)置為 8,表示 2 個(gè) Survivor 區(qū)(JVM 堆內(nèi)存年輕代中默認(rèn)有 2 個(gè)大小相等的 Survivor 區(qū))與 1 個(gè) Eden 區(qū)的比值為 2:8,即 1 個(gè) Survivor 區(qū)占整個(gè)年輕代大小的 1/10。

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

-XX:+UseParallelGC:設(shè)置為并行收集器。此配置僅對(duì)年輕代有效。即年輕代使用并行收集,而年老代仍使用串行收集。

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

-XX:OldSize:設(shè)置 JVM 啟動(dòng)分配的老年代內(nèi)存大小,類似于新生代內(nèi)存的初始大小 -XX:NewSize。

Tomcat的字符集配置優(yōu)化

Tomcat 的語(yǔ)言編碼,配置起來(lái)很慢,要經(jīng)過(guò)多次設(shè)置才可以了,否則中文很有可能出現(xiàn)亂碼情況。譬如漢字“中”,以 UTF-8 編碼后得到的是 3 字節(jié)的值 %E4%B8%AD,然后通過(guò) GET 或者 POST 方式把這 3 個(gè)字節(jié)提交到 Tomcat 容器,如果你不告訴 Tomcat 我的參數(shù)是用 UTF-8編碼的,那么 Tomcat 就認(rèn)為你是用 ISO-8859-1 來(lái)編碼的,而 ISO8859-1(兼容 URI 中的標(biāo)準(zhǔn)字符集 US-ASCII)是兼容 ASCII 的單字節(jié)編碼并且使用了單字節(jié)內(nèi)的所有空間,因此 Tomcat 就以為你傳遞的用 ISO-8859-1 字符集編碼過(guò)的 3 個(gè)字符,然后它就用 ISO-8859-1 來(lái)解碼。

設(shè)置起來(lái)不難使用“ -D= ”來(lái)設(shè)置系統(tǒng)屬性:

-Djavax.servlet.request.encoding=UTF-8

-Djavax.servlet.response.encoding=UTF-8

-Dfile.encoding=UTF-8

-Duser.country=CN

-Duser.language=zh

網(wǎng)頁(yè)題目:tomcat性能優(yōu)化
轉(zhuǎn)載注明:http://www.5511xx.com/article/dphhicc.html