Tomcat安装与优化

Tomcat安装与优化

1.安装jdk环境

    最新的JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  没账号注册一个,很快的

    前版本的JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

    这里选择Linux64位后缀tar.gz的复制下载链接,在linux服务上wget 下载链接 ,在服务器上解压,配置环境变量vim /etc/profile写在最后面

#/data/java目录是我创建的,把jdk包解压到里面,这个写解压位置的绝对路径

JAVA_HOME=/data/java/jdk的目录名字  
CLASSPATH=$JAVA_HOME/lib/
#谨慎,这里PATH写错了会发现命令都得打绝对路径才能用,悲催
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH

      配置没问题完成保存,source /etc/profile让配置的环境变量生效,这时候可以打命令java -version看看版本,是不是出java version "1.8.0_***",如果是1.6什么的说明没生效,看看解压的路径。

 

 

2.安装tomcat

    tomcat下载地址:http://mirrors.hust.edu.cn/apache/tomcat           选择tomcat进行下载,我下载的是apache-tomcat-8.5.31.tar.gz

    解压后改个名字列如mv apache-tomcat-8.5.31/ test_tocmat

(1)启动测试(测不测都行23333😄)

    启动前需要更改端口为可用端口,或者要使用的端口,进入到test_tomcat的conf目录vim server.xml更改

<!--<Server port="8005" shutdown="SHUTDOWN"> -->

第一个tomcat可以不改,为了方便后续的tomcat,统一进行修改,改为下面的,修改的端口别超过65535,不能已经占用的端口
<Server port="18005" shutdown="SHUTDOWN"><!--<Connector port="8080" protocol="HTTP/1.1" 这个8080是访问的地址,改成什么就访问什么地址 connectionTimeout="20000" redirectPort="8443" />--> <Connector port="12008" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" /><!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />--> <Connector port="18009" protocol="AJP/1.3" redirectPort="18443" /> #暂时改这么多

    进入到test_tomcat的bin目录,./catalina.sh start 启动tocmat,主要是为了测试能不能访问到,防火墙或者selinux有没有允许访问,这个页面有很多当前版本的配置

在test_tomcat目录下的bin下./catalina.sh stop  停止tocmat

(2)tomcat优化

vim /data/test_tomcat/bin/catalina.sh   #在没有注释的那一行上面加入一行,配置按照本机配置降低或者升高

JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Djava.awt.headless=true -Xms4096m -Xmx4096m -Xmn640M -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC"

 -Dfile.encoding=UTF-8:强行设置系统文件编码格式为utf-8;

-server:启用 JDK的 server 版本;

-Djava.awt.headless=true:告诉程序没有显示设备键盘和鼠标,但又需要使用他们提供的功能,处理图形时常用,列如用户每次登陆系统是都要生成一张验证码图片时;

-Xms:Java虚拟机初始化时堆的最小内存,此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmx:Java虚拟机可使用堆的最大内存,设置为了物理内存的1/4(线上服务器16G内存,注意调整);

-Xmn:年轻代大小;

-XX:NewSize=n:设置新生代的最大值,一般堆区会分为3个区域,新生代、中生代和老年代。我们在程序中通过new关键字新建出来的对象,一般都会分配在新生代中。当新生代满了后,JVM会通过GC来进行一次小规模的垃圾回收,此时新生代中存活的对象会被移动至中生代;

-XX:MaxTenuringThreshold=n:垃圾最大年龄,默认15,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率该参数只有在串行GC时才有效;

-XX:NewRatio=n:设置年轻代和年老代的比值。如:为2,表示年轻代与年老代比值为1:2,年轻代占整个年轻代年老代和的1/3;

-XX:+AggressiveOpts:加快编译;

-XX:+UseBiasedLocking:锁机制的性能改善;

-XX:+UseConcMarkSweepGC:设置年老代并发收集器,目标是尽量减少应用的暂停时间,减少full gc发生的几率,利用和应用程序线程并发的垃圾回收线程来标记清除年老代。这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除;

 -XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值;

-XX:+CMSParallelRemarkEnabled:降低标记停顿;

-XX:LargePageSizeInBytes=128m: 内存页的大小不可设置过大, 会影响Perm的大小;

-XX:+UseFastAccessorMethods:原始类型的快速优化;

-XX:+UseCMSInitiatingOccupancyOnly:使用手动定义初始化定义开始CMS收集;

-XX:+DisableExplicitGC:关闭System.gc()

 

vim /data/test_tomcat/conf/server.xml  

#<Connector port="12008" protocol="HTTP/1.1"
#                  connectionTimeout="20000"
#                   redirectPort="18443" />
    <Connector port="12008" protocol="HTTP/1.1"
               connectionTimeout="20000"
               maxThreads="500"
               minSpareThreads="50"
               maxSpareThreads="300"
               maxHttpHeaderSize="8192"
               acceptCount="500"
               redirectPort="18443"
               maxPostSize="62914560" />

connectionTimeout:网络连接超时,假设设置为0表示永不超时

maxThreads:最大线程数,大并发请求时,tomcat能创建来处理请求的最大线程数,超过则放入请求队列中进行排队,默认值为200;
acceptCount:当最大线程数(maxThreads)被使用完时,可以放入请求队列排队个数,超过这个数返回connection refused(请求被拒绝),一般设置和maxThreads一样,不过具体需要根据自己的应用实际访问峰值和平均值来权衡,默认值为100;

minSpareThreads:最小空闲线程数,任何情况都会存活的线程数,即便超过了最大空闲时间,也不会被回收,默认值4;
maxSpareThreads:最大空闲线程数,在最大空闲时间(maxIdleTime)内活跃过,此时空闲,当空闲时间大于maxIdleTime则被回收,小则继续存活,等待被调度,默认值50;

maxHttpHeaderSize:http请求头信息的最大程度,超过此长度的部分不予处理;

redirectPort:redirectPort指定服务器正在处理http请求时,收到了一个SSL传输请求后,重定向的端口号;

maxPostSize:最大post大小

3.项目上线

#删除tomcat中webapps下所有文件,谨慎别删根
rm -rf /data/test_tocmat/webapps/*
#进入webapps
cd /data/test_tocmat/webapps/
#新建ROOT目录,或者将项目war包改为ROOT.war后启动tomcat会自动将war包解压为ROOT目录
mkdir ROOT  或者 mv XX.war ROOT.war
#测试自己写一个ROOT里的index.html
echo "<h1>Hello World!!</h1>" >> ROOT/index.html

项目已经启动,在test_tomcat目录下tail -f logs/catalina.out查看日志,ctrl+c退出

 

 

posted @ 2018-06-14 16:03  漫风满画楼  阅读(568)  评论(0编辑  收藏  举报