• Tomcat优化


    Tomcat优化

    1.优化tomcat启动速度

    第一次启动tomcat可能会发现Tomcat启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改
    vim /usr/java/jdk1.8.0 201-amd64/jre/lib/security/java.security
    -117行-修改
    securerandom.source=file:/dev/urandom
    
    • 1
    • 2
    • 3
    • 4
    /dev/urandom是/dev/random的非阻塞版本,/dev/random的random pool
    依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用,/dev/random设备可以保证数据的随机性。
    
    /dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高,所以该随机数的安全性理论上不高。如果应用对安全性要求很高,那么应该使用/dev/random。
    
    • 1
    • 2
    • 3
    • 4

    /usr/local/tomcat/bin/shutdown.sh
    /usr/local/tomcat/bin/startup.sh

    cd /usr/local/tomcat

    主要目录说明

    bin:存放启动和关闭Tomcat的脚本文件,比较常用的是catalina.sh、startup.sh、shutdown.sh三个文件
    conf:存放Tomcat服务器的各种配置文件,比较常用的是server.xml、context.xml、tomcat-users.xml、web.xml四个文件。
    o server.xml:Tomcat的主配置文件,包含Service,Connector,Engine,Realm,Valve,Hosts主组件的相关配置信息;
    context.xml:所有host的默认配置信息:
    tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息,Tomcat自带的manager默认情况下会用到此文件,在Tomcat中添加/别除用户,为用户指定角色等将通过编辑此文件实现:
    web.xml:遵循Serv1et规范标准的配置文件,用于配置servlet,并为所有的web应用程序提供包括MIE映射等默认配置信息:
    ·lib:存放Tomcat运行需要的库文件的jar包,一般不作任何改动,除非连接第三方服务,比如redis,那就需要添加相对应的jar包
    ·logs:存放Tomcat执行时的日志
    ·temp:存放Tomcat运行时产生的文件
    webapps:存放Tomcat默认的Web应用部署目录
    work:Tomcat工作日录,存放jsp编译后产生的class文件,一般清除Tomcat缓存的时候会使用到
    ·src:存放Tomcat的源代码
    ·doc:存放Tomcat文档
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Tomcat虚拟主机配置

    很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。
    例如现在新增两个域名www.kgc.com和www.benet.com,希望通过这两个域名访问到不同的项目内容。
    
    • 1
    • 2

    1.创建kgc和benet项口目录和文件

    mkdir /usr/local/tomcat/webapps/kgc
    mkdir /usr/local/tomcat/webapps/benet
    echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
    echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
    
    • 1
    • 2
    • 3
    • 4

    2.修改Tomcat主配凰文件server.xml

    vim /usr/local/tomcat/conf/server.xml
    --165行前--插入
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Host name:主机名

    appBase:Tomcat程序工作目录,即存放web应用程序的目录:相对路径为webapps,绝对路径为/usr/local/tomcat/webapps
    unpackWARs:在启用此webappsl时是否对WAR格式的归档文件先进行展开:默认为true
    autoDeploy:在Tomcat:处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy:默认为true
    xmlValidation:是否验证xml文件执行有效性检验的标志
    xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web,xml文件执行有效性检验
    docBase:相应的web应用程序的存放位置:也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径:
    path:相对于Web服务器根路径而言的URI:如果为空"”,则表示为此webapp的根路径/;
    reloadable:是否允许重新加载此context相关的web应用程序的类:默认为false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    /usr/local/tomcat/bin/shutdown.sh
    /usr/local/tomcat/bin/startup.sh

    3.客户端刘览器访问验证
    echo “192.168.80.100 www.kgc.com www.benet.com”>/etc/hosts
    浏览器访问http:w,kac.com:8080/
    页面显示This is kgc page!
    浏览器访间http:benet.com:8080/
    页面显示This is benet page!

    Tomcat优化

    Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方而,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java虚拟机(JVM)调优。
    
    • 1

    服务器里Tomcat容易遇到高并发,影响服务器的资源,我们可以进行JDK优化

    image-20220727223959325

    Tomcat配置文件参数优化
    常用的优化相关参数如下:

    【redirectPort】如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口

    【maxThreads】Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是200。
    【minSpareThreads】最小空闲线程数,Tomcat
    启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是10
    【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。
    【URIEncoding】指定Tomcat容器的URL编码格式,语言编码格式这块倒不如其它Web服务器软件配置方便,需要分别指定。
    【connnectionTimeout】网络连接超时,单位:毫秒,设置为0表示永不超时,这样设置有隐忠的。通常默认
    20000毫秒就可以。
    【enableLookups】是否反查域名,以返回远程主机的主机名,取值为:true或false,如果设置为
    alse,则直接返回IP地址,为了提高处理能力,应设置为false
    【disableUploadTimeout】上传时是否使用超时机制。应设置为true。

    vim /usr/local/tomcat/conf/server.xml
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    essionMinsize=“2048”
    compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image
    /jpg,image/png”/>

    
    
    • 1
  • 相关阅读:
    以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的
    大数据下一代变革之必研究数据湖技术Hudi原理实战双管齐下-中
    敏捷开发中,Sprint回顾会的目的
    【算法总结】十大排序
    Qt4升级到Qt5中文乱码问题的解决
    C 基础知识内容
    一致性hash算法
    【快应用】如何使用命令打包快应用rpk
    【编程之路】Python编程进阶
    springboot常用组件的集成
  • 原文地址:https://blog.csdn.net/weixin_68579466/article/details/126091259