Java知識點(diǎn)總結(jié)業(yè)務(wù)場景篇31-32

三十一、Tomcat優(yōu)化

增大內(nèi)存(堆,持久代)并開啟server模式

我在做XXX項(xiàng)目時(shí),用到了poi導(dǎo)入和導(dǎo)出數(shù)據(jù),由于公司的業(yè)務(wù)比較繁多,數(shù)據(jù)量很大,測試時(shí)報(bào)內(nèi)存溢出,經(jīng)過我的分析再結(jié)合上網(wǎng)查閱資料,發(fā)現(xiàn)可能是tomcat內(nèi)存不足,需要增大,修改配置文件后測試不再報(bào)錯(cuò).

tomcat增大內(nèi)存的方式通過修改tomcat配置文件

window下, 在bin/catalina.bat文件中最前面添加:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m –Xms1024m -Xmx1024m

linux下,在catalina.sh最前面增加:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m –Xms1024m -Xmx1024m "

-client –service

當(dāng)我們在cmd中運(yùn)行-java時(shí),黑窗口會出現(xiàn)-client -service這兩參數(shù).其作用是設(shè)置虛擬機(jī)運(yùn)行模式;client模式啟動(dòng)比較快,但運(yùn)行時(shí)性能和內(nèi)存管理效率不如server模式,通常用于客戶端應(yīng)用程序。server模式啟動(dòng)比client慢,但可獲得更高的運(yùn)行性能。Windows默認(rèn)為client,如果要使用server模式,就需要在啟動(dòng)虛擬機(jī)時(shí)加-server參數(shù),以獲得更高性能,對服務(wù)器端應(yīng)用,推薦采用server模式,尤其是多個(gè)CPU的系統(tǒng)。在Linux,Solaris上,默認(rèn)值為server模式.

JDK版本

影響虛擬機(jī)還有JDK的版本,JDK分為32位,64位兩種版本,32位裝在32位系統(tǒng),64位系統(tǒng)可以裝32位和64位JDK.64位JDK性能優(yōu)于32位JDK.

測試的命令 java -xmx數(shù)值m –version 報(bào)錯(cuò)配置大小失敗,反之成功

增加Tomcat最大連接數(shù)

使用場景

我在做完一個(gè)XXX項(xiàng)目后,測試時(shí)發(fā)現(xiàn)并發(fā)數(shù)量增加到一定程度就會很卡,于是我想到了是不是tomcat最大連接數(shù)設(shè)置有限制.果不其然,配置文件中最大值才500,于是我更改了最大連接數(shù),根據(jù)業(yè)務(wù)我修改了連接數(shù)為2000,完美的解決了這個(gè)問題;

修改方法在conf/service.xml中默認(rèn)值

minSpareThreads="30" maxSpareThreads="75" enableLookups="false"

redirectPort="8443" acceptCount="100" connectionTimeout="20000"

disableUploadTimeout="true" />,修改maxthreads的值即可

tomcat進(jìn)行g(shù)zip壓縮從而降低網(wǎng)絡(luò)傳輸量

tomcat 壓縮設(shè)置tomcat壓縮gzip啟用

HTTP 壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,

在客戶端請求服務(wù)器對應(yīng)資源后,從服務(wù)器端將資源文件壓縮,

再輸出到客戶端,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。

相對于普通的瀏覽過程HTML ,CSS,Javascript , Text ,

它可以節(jié)省60%左右的流量。更為重要的是,它可以對動(dòng)態(tài)生成的,

包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁也能進(jìn)行壓縮,

壓縮效率也很高。

啟用tomcatgzip壓縮

要使用gzip壓縮功能,你需要在Connector節(jié)點(diǎn)中加上如下屬性

記住來源:http://www.qi788.com/info-42.html

compression="on" 打開壓縮功能

compressionMinSize="50" 啟用壓縮的輸出內(nèi)容大小,默認(rèn)為2KB

noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些資源類型需要壓縮

connectionTimeout="20000"

redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"

compression="on"

compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

三十二、memcached的介紹

memcached是一個(gè)用C語言開發(fā)的分布式的緩存,內(nèi)部基于類似hashMap的結(jié)構(gòu)。

它的優(yōu)點(diǎn)是協(xié)議簡單,內(nèi)置內(nèi)存存儲,并且他的

分布式算法是在客戶端完成的,不需要服務(wù)器端進(jìn)行

通信,我們當(dāng)時(shí)在做項(xiàng)目的時(shí)候因?yàn)榭紤]到項(xiàng)目

的高可用性高擴(kuò)展性,因此在服務(wù)器部署方面采用

了apache+jk+tomcat這種負(fù)載均衡的方式,但是也帶來了一個(gè)問題

就是session共享的問題,雖然可以通過session復(fù)制來解決這個(gè)

問題,但是在性能方面存在缺陷,所以最后我們采用了

用memcached來存儲session,這樣既解決了session共享

問題,也解決了session復(fù)制那種方式所產(chǎn)生的性能問題。

了解(不必主動(dòng)說,但別人問的話一定要知道)

memcached是以KEY-VALUE的方式進(jìn)行數(shù)據(jù)存儲的,

KEY的大小限制:Key(max)<=250個(gè)字符;

VALUE在存儲時(shí)有限制:Value(max)<= 1M;

根據(jù)最近最少使用原則刪除對象即LRU.

memcached默認(rèn)過期時(shí)間:ExpiresTime(max)= 30(days)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 一、MemCache簡介 session MemCache是一個(gè)自由、源碼開放、高性能、分布式的分布式內(nèi)存對象緩存...
    李偉銘MIng閱讀 3,994評論 2 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評論 18 399
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,256評論 6 342
  • 百年孤獨(dú)——阿瑪蘭妲 “至于阿瑪蘭妲,那孩子的鐵石心腸曾令她恐懼,她刻骨的痛苦曾令她痛苦,但現(xiàn)在她終于發(fā)現(xiàn)阿瑪蘭妲...
    早窗閱讀 3,487評論 1 2

友情鏈接更多精彩內(nèi)容