记一次 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

posted on 2014-07-28 10:50  封起De日子  阅读(183)  评论(0编辑  收藏  举报

导航