記一次 java程序優化

優化緣由

環境中部署兩個程序: 前端

  1. web應用 tomcat   10G(webservice服務端,前端web服務)
  2. java應用               5G(webservice客戶端,socket客戶端)

以前的設計思路是打算web應用做爲前端不作業務處理,後端使用webservice作能力接入。 java

 

1天能力處理量大概在150W次到兩百萬次左右: linux

  • 併發數量web端口在12tps
  • 應用端在20tps左右(能力聚合的時候可能會調用幾個能力作聚合操做)。

   

jvm優化

以前的應用服務的啓動參數 web

 

-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 Server 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 65535 *       hard    nofile 65535 #*               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 [linkage@zhczweb1 ~]$ /etc/rc.d/init.d/network restart
 
參考:
java server與client模式區別
相關文章
相關標籤/搜索