• tomcat性能优化参数


    线上环境使用默认tomcat配置文件,性能很一般,为了满足大量用户的访问,需要对tomcat进行参数性能优化,具体优化的地方如下:

    • Linux内核的优化
    • 服务器资源JVM 配置的优化
    • Tomcat参数优化
    • Tomcat配置连接器
    • 配置负载集群优化

    这里着重讲解tomcat参数的优化:server.xml文件,关闭DNS查询、配置最大并发等参数。

    maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

    acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

    当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。

    1,vim  /usr/local/tomcat/conf/server.xml   优化http 8080访问端口段加入以下优化,再把默认的删掉

    真实企业也是一下的参数 不变

    <Connector port="8080"   

            protocol="org.apache.coyote.http11.Http11NioProtocol"  

               connectionTimeout="20000"  

               redirectPort="8443"   

               maxThreads="5000"   

               minSpareThreads="20"  

               acceptCount="1000"

               disableUploadTimeout="true"

               enableLookups="false"    

              URIEncoding="UTF-8" />

     

    2,Catalina.sh JVM 参数优化java系统内存优化 ,根据自己虚拟机得内存来优化一下Xms

     Xmx   Xmn的参数 这里配置的内存不要太大一般位置系统内存的3/1  真实企业系统内存最低要留2个G    其中Xmn为Xmx内存的4/1  

    如果不配置优化jvm   tomcat默认是502

    参数添加位置 如下: 其中参数一般有开发人员来配置算出最优值

     

    添加如下内容vim  /usr/local/tomcat/bin/ catalina.sh

    CATALINA_OPTS="$CATALINA_OPTS –Xms1024M –Xmx1024M –Xmn512M -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE  -DRAMDISK=/ -DUSE_RAM_DISK=ture -DRAM_DISK=true

    3,优化server.conf配置文件

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" //最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断

    minSpareThreads="100" //Tomcat 初始化时创建的线程数,默认设置 25

    prestartminSpareThreads = "true"//在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就无效

    maxQueueSize = "100"//最大的等待队列数,超过则拒绝请求 />

    <Connector executor="tomcatThreadPool" port="8080"

    protocol="org.apache.coyote.http11.Http11Nio2Protocol" //Tomcat 8 设置 nio2 更好,Tomcat 6 、7设置nio更好:org.apache.coyote.http11.Http11NioProtocol

    connectionTimeout="20000"

    minSpareThreads="100" maxSpareThreads="1000"最大处理连接数线程

    minProcessors="100“同时处理请求的最小数

    maxProcessors=“1000”同时处理请求的最大数

    maxConnections="1000" redirectPort="8443"

    enableLookups="false" //禁用DNS查询 acceptCount="100" //指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100

    maxPostSize="10485760" //以 FORM URL 参数方式的 POST 提交方式,限制提交最大的大小,默认是2097152(2兆),它使用的单位是字节。10485760 为 10M。如果要禁用限制,则可以设置为 -1。

    compression="on" disableUploadTimeout="true" compressionMinSize="2048"

    acceptorThreadCount="2" //用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核CPU一般配置为 2.

    compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/ja

    vascript" URIEncoding="utf-8" keepAliveTimeout="0"

    关闭shutdown端口:<Server port="-1" shutdown="SHUTDOWN">

    关闭ajp连接:注释<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    取消访问日志Valve阀门

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

    prefix="localhost_access_log." suffix=".txt"

    pattern="%h %l %u %t "%r" %s %b" />

    />

    4,tomcat配置连接器

    Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式
    bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即Java.io包及其子包)。 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。默认的模式,性能最差,没有经过任何优化处理和支持。
    =============================================================================
    nio(non-blocking I/O),java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Javanio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。
    #查看日志默认 tail -10 catalina.out
    18-Jun-2019 05:30:31.727 INFO [main] org.apache.coyote.AbstractProtocol.start StartingProtocolHandler ["http-nio-8080"]
    =============================================================================
    apr(apache Portable Runtime/Nginx可移植运行时库),Tomcat将以JNI的形式调用apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。

    #修改默认模式为apr模式,Apr 效率最高
    要让Tomcat以apr模式来运行,必须安装apr和native
    安装apr:
    yum -y install apr apr-devel gcc-c++
    安装native:
    cd /usr/local/tomcat/bin/
    wget -c http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.21/source/tomcat-native-1.2.21-src.tar.gz
    tar xzfv tomcat-native-1.2.21-src.tar.gz
    cd /usr/local/tomcat/bin/tomcat-native-1.2.21-src/native
    ./configure --with-apr=/usr/bin/apr-1-config

    #编译之前需要提前部署java 环境
    make && make install
    整合Tomcat apr:
    设置环境变量
    方法:在/etc/profile中加入:
    export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
    source /etc/profile
    修改配置文件:vim tomcat/conf/server.xml
    修改以下内容:
    修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
    <Connector port=“8080” protocol=“org.apache.coyote.http11.Http11AprProtocol”
    connectionTimeout=“20000”
    redirectPort=“8443” />

    #查看日志默认 tail -10 catalina.out
    18-Jun-2019 05:57:04.550 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
    ProtocolHandler ["http-apr-8080"]

    5,配置多个tomcat实例,方法也很简单,只需要在服务器上cp多个tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。

    为了提升整个网站的性能,还需要在tomcat前面架设nginx web反向代理服务器,用以提高用户高速访问。

  • 相关阅读:
    卷积神经网络中的傅里叶变换:1024x1024 的傅里叶卷积
    在不平衡数据上使用AUPRC替代ROCAUC
    论文推荐:TResNet改进ResNet 实现高性能 GPU 专用架构并且效果优于 EfficientNet
    信息安全风险评估
    剑指 Offer
    Docker创建容器时默认的共享内存shm太小报错,程序无法正常运行
    VS Code 连接访问本地主机上的Docker容器
    关于protobuf报错:If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
    训练神经网络时报错:can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
    我学习使用五笔的经验
  • 原文地址:https://www.cnblogs.com/zhangan/p/10881550.html
Copyright © 2020-2023  润新知