Nginx+resin調優文檔[原創]

為什么不選擇Apache/mod+resin?
       前面一直使用該模式,
mod_caucho暴露源碼的bug一直未得到徹底的解決。因此切換到Nginx+resin平臺。硬件上要求除了內存一定要足夠大(建議>4G),無其它要求(當然也不能太破,呵呵sweat)。操作系統強烈要求安裝64位,32位操作系統jvm只能識別不到2G的內存,印象中是1.57G(單實例應用)。下面總結自己的一些調優方法及配置。

調優硬件環境

CPU:Intel Xeon*2(雙核)
MEM:8G
SWAP:1G

一、測試32系統所支持的最大可用內存
java -XmxXXXXM -version
不斷加大-Xmx的大小,截止到出現以下提示:
Could not create the Java virtual machine.

二、Nginx配置

   location / {
     root /var/www/app.cn;
     index index.jsp;
     proxy_pass http://localhost:8080;
     include /usr/local/nginx/conf/proxy.conf;
   }
   location ~* \.(jsp|do|shtml)$ {
     root /var/www/app.cn;
     index index.jsp;
     include /usr/local/nginx/conf/proxy.conf;
     proxy_pass http://localhost:8080;
     proxy_set_header X-Real-IP $remote_addr;
   }

      以代理的方式進行整合,靜態文件繼續由Nginx來解析,擴展名為jsp|do|shtml才丟給后端resin來處理。即使resin發現的故障,前端最多只會報500、502 time out的信息。
三、resin配置

1、jvm的優化
#vi $resin_root/bin/httpd.sh

view plainprint?
args="-Xmx6048m -Xms6048m -Xmn2g -Xss128k -XX:NewSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -Dsun.net.inetaddr.ttl=60"

    1.1、Xmx與Xms建議配置一致,避免每次垃圾回收完成后JVM 重新分配內存。預留2G左右的內存空間給Nginx與OS就差不多了。
    1.2、Xmn配置成Xmx的1/3。
    1.3、Dsun.net.inetaddr.ttl=60,java對DNS解析域名結果進行緩存,默認超時時間為-1(在重啟JVM前永久緩存),如有涉及域名解析失效需修改該值。

2、resin并發數限制
免費的resin是沒有pro的授權,并發連接數(默認512)配置參數不可見。因此通過修改源碼達到突破限制的目的。
1、修改方法:
    1.1、下載resin3.0.22源碼;
    1.2、修改resin-3.0.22/modules/resin/src/com/caucho/server/port/Port.java 
 

  // default timeout
            private long _timeout = 65000L;
            private int _connectionMax = 512;修改成20480
            private int _minSpareConnection = 16;
            private int _keepaliveMax = -1;
            private int _minSpareListen = 5;
            private int _maxSpareListen = 10;

    1.3、將編譯后的Port.class覆蓋原 /lib/resin.jar包。

2、可以從resin-status結果得到證實
1.png
                                                       [編譯前]
—————————————————————————————————————————
6.png
                                                       [編譯后]

3、resin.conf配置 

<dependency-check-interval>-1</dependency-check-interval>

生產環境建議關閉自檢查 ,原因是會消耗系統一定資源及部分更新會出現不可意料的錯誤。

<!-- Maximum number of threads. -->  
<thread-max>20480</thread-max>

建議與private int _connectionMax參數保持一致。

       其它參數需根據應用的具體情況來調整,如長鏈接超時等。以上為本人整理一些調優筆記,如有遺漏或糾正請與我聯系。

如大家有什么疑問或感興趣的話題可以通過weibo與我交流:http://t.qq.com/yorkoliu

轉自:http://blog.liuts.com/post/204/

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1757

(0)
s19930811s19930811
上一篇 2015-03-27
下一篇 2015-03-27

相關推薦

  • 蘿卜運維記–第一周

    part1— ①描述計算機的組成及功能 ▲計算機是什么? 計算機(ENIAC):簡述—-接收用戶的指令,經過中央處理器處理過后,產生對使用者有用的信息。具有存儲記憶,處理復雜數據運算的計算機器 Ⅰ 計算機組成及功能 ☆硬件部分: 1.中央處理器CPU(Central Processing Unit)↓↓↓↓:  &n…

    Linux干貨 2016-12-06
  • LVM邏輯卷管理相關命令的用法

    前提:創建分區,文件或添加硬盤作為LVM的物理卷 pv(物理卷) 命令用法 1、pvcreate創建pv pvcreate -s    指定PE大小,默認為4M 2、pvremove刪除pv 3、pvs,pvdisplay顯示pv pvs 顯示pv摘要 pvdisplay 詳細顯示pv 4、pvmove:把卷組中一個物…

    Linux干貨 2016-08-30
  • SElinux 練習

    練習 .1、安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,設置http_sys_content_t到/website及目錄下所有文件,使網站可訪問 mkdir    /website vim    /etc/httpd/conf/ht…

    Linux干貨 2016-09-19
  • 設計模式(十)享元模式Flyweight(結構型)

    相對于其它模式,Flyweight模式在PHP實現似乎沒有太大的意義,因為PHP的生命周期就在一個請求,請求執行完了,php占用的資源都被釋放。我們只是為了學習而簡單做了介紹。 1. 概述 面向對象技術可以很好地解決系統一些靈活性或可擴展性或抽象性的問題,但在很多情況下需要在系統中增加類和對象的個數。當對象數量太多時,將導致運行代價過高,帶來性能下降等問題?!?/p>

    Linux干貨 2015-07-08
  • 第一周作業

    一、計算機的組成及功能 計算機是由硬件和軟件組成, 1、硬件主要分為五個部分: 1) 控制器(Control)  CPU 2) 運算器(Datapath)   3) 存儲器(Memory)  內存 4) 輸入(Input system)  鍵盤、鼠標 5) 輸出(Out…

    Linux干貨 2017-07-11
  • sed使用小命令及課后作業

    Stream EDitor,  行編輯器 sed 是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed …

    Linux干貨 2017-03-18
欧美性久久久久