Tomcat安全与性能调优

Tomcat 安全

配置安全

  • 删除webapps目录下的所有文件,禁用tomcat管理界面;
  • 注释或删除tomcat-users.xml文件内的所有用户权限;
  • 更改关闭tomcat指令或禁用
    • tomcat的server.xml中定义了可以直接关闭 Tomcat 实例的管理端口(默认8005)。可以通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。
    • 由于默认关闭Tomcat 的端口和指令都很简单。默认端口为8005,指令为SHUTDOWN 。
    方案一:更改端口号和指令:
    <Server port="8456" shutdown="itcast_shut">
    
    方案二:	禁用8005端口:
    <Server port="‐1" shutdown="SHUTDOWN">
    
  • 定义错误页面
    • 在webapps/ROOT目录下定义错误页面 404.html,500.html;
    • 用户在访问资源时出现404,500这样的异常,就能看到我们自定义的错误页面,而不会看到异常的堆栈信息,提高了用户体验,也保障了服务的安全性。
    • 然后在tomcat/conf/web.xml中进行配置 , 配置错误页面:
    <error‐page>
        <error‐code>404</error‐code>
        <location>/404.html</location>
    </error‐page>
    <error‐page>
        <error‐code>500</error‐code>
        <location>/500.html</location>
    </error‐page>
    

应用安全

  • 实现自己的安全管理模块(权限模块),用于控制应用系统的安全访问
  • 包含两个部分:认证(登录/单点登录)和授权(功能权限、数据权限)两个部分
  • 对于业务系统,做一套适用于自己业务系统的权限模块,也有很多的应用系统直接使用一些功能完善的安全框架,将其集成到web应用中,如:SpringSecurity、Apache Shiro等。

传输安全

Tomcat支持HTTPS

  • 生成秘钥库文件。

    keytool ‐genkey ‐alias tomcat ‐keyalg RSA ‐keystore tomcatkey.keystore
    

    在这里插入图片描述
    输入对应的密钥库密码, 秘钥密码等信息之后,会在当前文件夹中出现一个秘钥库文件:tomcatkey.keystore

  • 将秘钥库文件 tomcatkey.keystore 复制到tomcat/conf 目录下。

  • 配置tomcat/conf/server.xml

    <Connector port="8443"
    	protocol="org.apache.coyote.http11.Http11NioProtocol"
        maxThreads="150" schema="https" secure="true" SSLEnabled="true">
        <SSLHostConfig certificateVerification="false">
            <Certificate
    		certificateKeystoreFile="D:/DevelopProgramFile/apache‐tomcat‐8.5.42‐windows‐x64/apache‐tomcat‐8.5.42/conf/tomcatkey.keystore"
    		certificateKeystorePassword="yzx"  type="RSA" />
        </SSLHostConfig>
    </Connector>
    
  • 访问Tomcat ,使用https协议。
    在这里插入图片描述

Tomcat性能调优

JVM参数调优

  • Tomcat是一款Java应用,JVM的配置便与其运行性能密切相关,JVM优化的重点在内存分配和GC策略的调整上,因为内存会直接影响服务的运行效率和吞吐量,JVM垃圾回收机制则会不同程度地导致程序运行中断。
  • 根据应用程序的特点,选择不同的垃圾回收策略,调整JVM垃圾回收策略,可以极大减少垃圾回收次数,提升垃圾回收效率,改善程序运行性能。

JVM内存参数

  • -server
    • 启动Server,以服务端模式运行
    • 服务端模式建议开启
  • -Xms
    • 最小堆内存
    • 建议与-Xmx设置相同
  • -Xmx
    • 最大堆内存
    • 建议设置为可用内存的80%
  • -XX:MetaspaceSize
    • 元空间初始值
  • -XX:MaxMetaspaceSize
    • 元空间最大内存 默认无限
  • -XX:MaxNewSize
    • 新生代最大内存 默认16M
  • -XX:NewRatio
    • 年轻代和老年代大小比值,取值为整数,默认为2
    • 不建议修改
  • -XX:SurvivorRatio
    • Eden区与Survivor区大小的比值,取值为整数,默认为8
    • 不建议修改

Tomcat默认垃圾回收器
在这里插入图片描述
JVM调优

vi bin/catalina.sh

JAVA_OPTS="-server -Xms2g -Xmx2g -XX:MetaSpaceSize=256m -XX:MaxMetaSpaceSize=528m -XX:SurvivorRatio=8 -XX:USEConcMarkSweepGC -XX:+PrintGCDetails“

在这里插入图片描述

Tomcat配置调优

调整conf/server.xml中的连接器的配置maxThreads:池中最大线程数。

  • maxConnections:最大连接数,CPU密集型建议不要过高,CPU运算不密集的建议建议2000左右
  • acceptCount:最大等待数 多余的请求会放到等待队列(连接数=maxConnections+acceptCount,还多的会被拒绝)
  • maxThreads:最大线程数,根据硬件决定
<Connector port="8080"  
          protocol="HTTP/1.1"
          redirectPort="8443" 
          connectionTimeout="20000"
          URIEncoding="UTF‐8"
          maxConnections="1000"
          acceptCount="200"
          maxThreads="500"  />
发布了109 篇原创文章 · 获赞 47 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43934607/article/details/104386406