• 记一次 java程序优化


    优化原因

    环境中部署两个程序:

    1. web应用 tomcat   10G(webservice服务端,前端web服务)
    2. java应用               5G(webservice客户端,socket客户端)

    之前的设计思路是打算web应用作为前端不做业务处理,后端使用webservice做能力接入。

     

    1天能力处理量大概在150W次到两百万次左右:

    • 并发数量web端口在12tps
    • 应用端在20tps左右(能力聚合的时候可能会调用几个能力做聚合操作)。

       

    jvm优化

    之前的应用服务的启动参数

     

     -Xss1024k -Xms1g -Xmx3g -Xmn2g -XX:PermSize=64m -XX:MaxPermSize=128m -Djava.awt.headless=true  -XX:+UseParallelGC
        优化后:
     -server -Xss1024k -Xms3g -Xmx3g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true  -XX:+UseParNewGC -XX:ParallelGCThreads=20  -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
    • 将jvm设置为server模式(如下默认值为server也可不设)
    [linkage@zhczint1 ~]$ java -version
    java version "1.6.0_33"
    Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
    Java HotSpot(TM) 64-Bit <strong>Server</strong> VM (build 20.8-b03, mixed mode)
    •  将Xms与Xmx,XX:MaxPermSize与XX:PermSize设置为相同,防止在伸缩的时候性能降低
    •  将原有年轻态并行收集器,年老太串行收集器设置(默认)  修改为 年轻态并行收集器,年老态并发收集器。

    修改完后,性能稳定了不少,同时对web服务器进行了jvm参数的相应优化



     

     linux参数优化

    查看打开文件限制 (调优socket情况)
    more /etc/security/limits.conf
    #<domain>      <type>  <item>         <value>
    #
    *       soft    nofile  <strong>65535</strong>
    *       hard    nofile  <strong>65535</strong>
    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
     查看网络连接情况
    [linkage@zhczweb1 ~]$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
    TIME_WAIT 132
    FIN_WAIT2 23
    ESTABLISHED 79
    SYN_RECV 30
     设置连接情况
    ~
    [linkage@zhczweb1 ~]$ vi /etc/sysctl.conf 
    
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    
    <span style="font-size: 1em; line-height: 1.5;">[linkage@zhczweb1 ~]$  </span>/etc/rc.d/init.d/network restart 
     
    参考:
    java server与client模式区别
    • 大小: 23 KB
  • 相关阅读:
    解决360浏览器兼容模式的页面显示问题
    .NET知识点汇总
    C# 6.0新加特性
    C# 5.0新加特性
    C# 4.0新加特性
    C# 3.0新加特性
    C# 2.0新加特性
    C#中null、""、string.empty区别
    C#使用SQLite
    页面 关于处理如何点击按钮实现定位到某一位置操作
  • 原文地址:https://www.cnblogs.com/new0801/p/6175966.html
Copyright © 2020-2023  润新知