zoukankan      html  css  js  c++  java
  • JVM Tomcat Nginx调优参数参考

    XXXX调优参数

    约束:

    l  本次调优因条件所限,不涉及数据库调优;

    l  本次调优从以下几方面进行:

    • OS
    • Nginx
    • Tomcat
    • Jvm

    说明:

    OS/Nginx/Tomcat调优方案基本遵从网上的基本调优方法,以服务配置的不同,加以微调;Jvm调优则遵从Oracle官方的G1最佳实践。

    调优基本原则:

           不要单纯为了调优而去调优,应该有针对性的去发现不足,解决问题,以提高性能。

    所以,调优的前提是做好各种监控分析,包括服务器基础资源使用、各个应用运行状况、代码质量、数据库状况、等等,根据业务的并发,服务器资源,以及存在的问题,有针对性的去优化。

    方法:

           JMeter并发提交请求,Zabbix监控CPU/Memory/TCP,以GC日志来验证调优效果。

    调优参数:

    Payment-api:

    基准:

    command=/usr/java/jdk1.8.0_151/bin/java   org.springframework.boot.loader.JarLauncher     --server.port=94%(process_num)02d

    预发布压测:

    command=/usr/java/jdk1.8.0_151/bin/java    -XX:+UseG1GC -Xmx6g -Xms6g -XX:MetaspaceSize=256M -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/gclog/payment-api-outOfMemoryError.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/data/logs/gclog/payment-api-gc.log -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution   org.springframework.boot.loader.JarLauncher     --server.port=94%(process_num)02d

    正式环境推荐参数:

    command=/usr/java/jdk1.8.0_151/bin/java    -XX:+UseG1GC -Xmx6g -Xms6g -XX:MetaspaceSize=256M -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/gclog/payment-api-outOfMemoryError.log   org.springframework.boot.loader.JarLauncher     --server.port=94%(process_num)02d

    OS:

    配置文件/etc/sysctl.conf

                  sysctl -w net.ipv4.tcp_syncookies = 1        #防止一个套接字有过多的试图连接达到是引起过载

                  sysctl -w net.core.somaxconn = 1024               #默认128,连接队列

                  sysctl -w net.ipv4.tcp_fin_timeout = 30             #timewait的超时时间

                  sysctl -w net.ipv4.tcp_tw_reuse = 1                  #OS直接使用timewait的连接

                  sysctl -w net.ipv4.tcp_tw_recycle = 0         #回收禁用    

    配置文件/etc/security/limits.conf

                  * hard nofile 204800

                  * soft nofile 204800

                  * soft core unlimited

                  * soft stack 204800

    Nginx:

           增加工作线程数和并发连接数

           启用长连接

           启用缓存/压缩

           其他

    配置工作线程和并发数

           worker_processes 8;            #CPU

           events{

                  worker_connections 10240;         #每一个进程打开的最大连接数,包含了Nginx与客户端和Nginx与upstream之间的连接

                  multi_accept on;           #可以一次建立多个连接

                  use epoll;

           }

    配置后端Server的长连接

           upstream server_pool{

                  server localhost:8080 weight=1 max_fails=2 fail_timeout=30s;

                  server localhost:8180 weight=1 max_fails=2 fail_timeout=30s;

                  keepalive 300;

           }

           location / {

                  proxy_http_version 1.1;

                  proxy_set_header Upgrade $http_upgrade;

                  proxy_set_header Connection "upgrade":

                  proxy_pass http://server_pool/;

           }

          

    配置压缩

                  gzip on;

                  gzip_http_version 1.1;

                  gzip_disable "MSIE [1-6].(?!.*SV1)";

                  gzip_proxied any;

                  gzip_types text/plain text/css application/javascript application/x-javascript application/json application/xml application/vnd.ms-fontobject application/x-font-ttf application/svg+xml application/x-icon;

                  gzip_vary on;        #Vary:Accept-Encoding

                  gzip_static on;              #如果有压缩好的 直接使用

    其他优化

           sendfile   on;         #减少文件在应用和内核之间的拷贝

           tcp_nopush    on;         #当数据包达到一定大小再发送

           tcp_nodelay   off;  #有数据随时发送

    Tomcat:

    vim /data/apache-tomcat-8.0.46-8180/bin/catalina.sh

    预发布:

    JAVA_OPTS="-server -XX:+UseG1GC -Xmx4g -Xms4g -XX:MaxGCPauseMillis=200 -XX:MetaspaceSize=256M -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/gclog/tomcatDumpOnOutOfMemoryError.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/data/logs/gclog/tomcat8180-gc.log -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution"

    正式环境推荐参数:

    JAVA_OPTS="-server -XX:+UseG1GC -Xmx4g -Xms4g -XX:MaxGCPauseMillis=200 -XX:MetaspaceSize=256M -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/gclog/tomcatDumpOnOutOfMemoryError.log"

    vim /data/apache-tomcat-8.0.46-8180/conf/server.xml

    启用连接池:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

            maxThreads="800"

            minSpareThreads="100"

            prestartminSpareThreads="true"

            maxIdleTime="60000"

            maxQueueSize="300"/>

     

    修改连接数:

    <Connector port="8180" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11AprProtocol"

                   URIEncoding="UTF-8"

                   connectionTimeout="20000"

                   enableLookups="false"

                   connectionUploadTimeout="150000"

                   redirectPort="8443"

                   acceptCount="100"  

                   maxPostSize="10485760"

                   acceptorThreadCount="2"   

                   disableUploadTimeout="true"  

                   keepAliveTimeout ="6000" 

                   maxKeepAliveRequests="500" />

     

    禁用AJP接口:

    <!--

        <Connector port="8109" protocol="AJP/1.3" redirectPort="8143" />

    -->

    启用APR模式

           apr-1.6.5.tar.gz 

    apr-util-1.6.1.tar.gz 

    openssl-1.1.0.tar.gz      升级至该版本

    vim /etc/profile

           export LD_LIBRARY_PATH=/usr/local/apr/lib

    source /etc/profile

    参考:

    Tomcat:

    https://blog.csdn.net/weixin_37377511/article/details/80606964

    JVM:

    https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html#recommendations

  • 相关阅读:
    使用CSS3美化复选框checkbox
    MYSQL select时锁定记录问题
    SQL Server中的锁
    T-SQL查询进阶—理解SQL Server中的锁
    SQL:查找被锁的表,以及锁表的SQL语句(重点推荐)
    Mac 常用的手势
    Mac 常用的快捷键
    Mac上的学习神器:Marginnote
    Mac 常用命令介绍
    Mac 上的传奇效率神器 Alfred 3
  • 原文地址:https://www.cnblogs.com/jxdong116/p/9713431.html
Copyright © 2011-2022 走看看