tomcat

conf/server.xml

#tomcat shutdonw 端口连接端口 输入shutdown会关闭tomcat
<Server port="8005" shutdown="SHUTDOWN">
#用户管理端 认证模式 用户名密码模式
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              #用户管理配置文件
              pathname="conf/tomcat-users.xml" />
	#web端口             
    <Connector port="8080" protocol="HTTP/1.1"
    		   #超时时间毫秒
               connectionTimeout="20000"
               redirectPort="8443" />
    #tomcat与apache连接的端口,使用nginx可以注释           
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    #nio工作模式
    #protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    #apr工作模式 修改8080和8009端口 需下载apr apr-devel tomcat-native
    #protocol="org.apache.coyote.http11.Http11AprProtocol"
    	  #hostname域名,appbase站点目录
          <Host name="localhost"  appBase="webapps"
          #自动解压           #自动部署 把代码加载到jvm中
          unpackWARs="true" autoDeploy="true">
#访问日志格式          
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 			   #日志文件名称前缀
               prefix="localhost_access_log" suffix=".txt"
               #日志文件名称后缀 &quot html中的一个双引号
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

bin/
version.sh查看tomcat和jdk的版本
catalina.sh核心脚本,开启和关闭均会调用,配置 java启动参数 ,tomcat远程管理 配置jvm参数
conf/
web.xml补充额外功能
tomcat-user.xml管理端配置文件
logs/
catalina.out #tomcat最全日志 查看 error startup finished启动的时间 被切割后不会清空

配置tomcat管理端conf/tomcat-user.xml

		<role rolename="admin-gui"/>#允许访问HTML图形用户界面和状态页
        <role rolename="admin-script"/>#允许访问文本界面和状态页
        <role rolename="manager-gui"/>#允许访问html接口(即URL路径为/manager/html/*)
        <role rolename="manager-script"/>#允许访问纯文本接口(即URL路径为/manager/text/*)
        <role rolename="manager-jmx"/>#允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
        <role rolename="manager-status"/>#允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)
        <user username="test" password="test" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

webapps/manager/META-INF/context.xml(server status manager app)

          allow="\d\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1

webapps/host-manager/META-INF/context.xml(host manager)

          allow="\d\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1

jvm java虚拟机关注使用内存情况
jre java开发环境
jdk java运行环境
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export
CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/app/tomcat

jar包 相当于把tomcat放到jar中
war包 放入webapps中自动解压

tomcat工作的三种模式
bio 一个线程处理一个请求
nio 少量线程处理大量请求
apr 处理静态资源性能,也是高并发首选模式
c8使用编译安装tomcat-native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

jps -lvm 查看java的进程pid
echo ‘obase=16;10802’ |bc 转换为16进制
jstack 进程pid |grep -i 转换为16进制的线程pid
jmap -heap javapid 查看jvm内存使用情况
jmap -dump:format=b,file=/root/tomcat.bin javapid 导出jvm内存使用情况,用mat分析

bin/catalina.sh 写在一行
CATALINA_OPTS="$CATALINA_OPTS #java启动参数
-Dcom.sun.management.jmxremote #启动远程监控功能
-Dcom.sun.management.jmxremote.port=12345 #监听端口
-Dcom.sun.management.jmxremote.authenticate=false #认证用户名密码
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=111.231.78.205" #ip地址

windows连接方式
jdk/bin/jconsole
jdk/bin/jvisualvm

tomcat安全优化

  1. 修改shutdonw端口和口令
  2. 将代码存放在安装目录以外的目录
  3. 降权启动(监牢模式 keep in jail)su - tomcat -c “/app/tomcat/bin/startup.sh”
  4. 文件列表访问控制conf/web.xml
<init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param>
  1. 版本信息隐藏
conf/web.xml 
<error-page> 
<error-code>403</error-code> 
<location>/forbidden.jsp</location> 
</error-page> 
<error-page> 
<error-code>404</error-code> 
<location>/notfound.jsp</location> 
</error-page> 
<error-page> 
<error-code>500</error-code> 
<location>/systembusy.jsp</location> 
</error-page>
  1. server header重写
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" server="nginx/1.16.1" connectionTimeout="20000" redirectPort="8443" />
  1. 访问限制
<Context path="" docBase="/home/work/tomcat" debug="0" reloadable="false" crossContext="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="61.148.18.138,61.135.165.*" deny="*.*.*.*"/> </Context>
  1. 脚本权限回收 chmod 700 tomcat/bin/*.sh
  2. 配置完整的日志格式
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %r %s %b %{Referer}i % {User-Agent}i %D" resolveHosts="false"/>
%{Referer}i 用户从哪里跳转过来的
%{User-Agent}i 用户客户端(浏览器)

tomcat性能优化

  • jmeter压力测试工具bin/jmeter.bat,添加线程组添加http请求添加结果树和聚合报告,基准值:吞吐量 10 左右

  • 注释ajp端口

  • maxThreads=“500” #最大的线程数量200-400之间

  • acceptCount=""#当达到最大线程数量的时候 队列长度,与maxThreads 一致

  • acceptorThreadCount=“2” #分为几对 与cpu核心总数 一致或2倍 默认是1

  • minSpareThreads=“10” #空闲时候最小的线程数量

  • enableLookups=“false” #禁止DNS逆向查询

  • compression=“on” #开启 tomcat压缩功能

  • compressionMinSize=“2048” #压缩文件 最小2048字节

  • compressableMimeType=“text/html,text/plain,text/css,applicati on/javascript,application/json,application/x-font- ttf,application/x-font-otf” #压缩哪些类型的文件

  • disableUploadTimeout=“true” #关闭上传文件超时时间

jvm优化
#设置 jvm初始内存大小 (物理内存1/64) jvm最大内存大小 (物理内存的1/4 )
##修改 catalina.sh文件
JAVA_OPTS=’-Xms1024m -Xmx1024m -Xlog gc:/var/log/tomcat_gc.log’
#-Xms jvm 初始内存
#-Xmx max 最大 jvm最大内存
#一般 -Xmx 是 -Xms 2倍
#gc garbage collect 垃圾回收 定期清理 jvm内存
#-Xloggc 执行gc的时候 日志 出现故障tomcat崩溃 挂了 catalaina.out gc日志

conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值