天天看點

Nginx+resin調優文檔

為什麼不選擇Apache/mod+resin?

調優硬體環境

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)$ {

     proxy_set_header X-Real-IP $remote_addr;

      以代理的方式進行整合,靜态檔案繼續由Nginx來解析,擴充名為jsp|do|shtml才丢給後端resin來處理。即使resin發現的故障,前端最多隻會報500、502 time out的資訊。

<a></a>

三、resin配置

1、jvm的優化

#vi $resin_root/bin/httpd.sh

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"  

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結果得到證明

<a href="http://writeblog.csdn.net/attachment.php?fid=129" target="_blank"></a>

                                                       [編譯前]

---------------------------------------------------------------------------------------------------------------------------

<a href="http://writeblog.csdn.net/attachment.php?fid=130" target="_blank"></a>

                                                       [編譯後]

3、resin.conf配置

&lt;dependency-check-interval&gt;-1&lt;/dependency-check-interval&gt;   

&lt;dependency-check-interval&gt;-1&lt;/dependency-check-interval&gt;

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

&lt;!-- Maximum number of threads. --&gt;   

&lt;thread-max&gt;20480&lt;/thread-max&gt;   

&lt;!-- Maximum number of threads. --&gt;

&lt;thread-max&gt;20480&lt;/thread-max&gt;

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

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