<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post/204/</link>
<title><![CDATA[Nginx+resin调优文档[原创]]]></title> 
<author>刘天斯 &lt;liutiansi@gmail.com&gt;</author>
<category><![CDATA[Resin]]></category>
<pubDate>Sat, 12 Jun 2010 04:05:37 +0000</pubDate> 
<guid>https://blog.liuts.com/post/204/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为什么不选择Apache/mod+resin?<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面一直使用该模式，<a href="http://bbs.chinaunix.net/thread-571500-1-1.html" target="_blank">mod_caucho暴露源码的bug</a>一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G)，无其它要求(当然也不能太破，呵呵)。操作系统强烈要求安装64位，32位操作系统jvm只能识别不到2G的内存，印象中是1.57G(单实例应用)。下面总结自己的一些调优方法及配置。<br/><br/><strong>调优硬件环境</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>CPU：Intel Xeon*2(双核)<br/>MEM：8G<br/>SWAP:1G<br/></div></div><br/><strong>一、测试32系统所支持的最大可用内存</strong><br/>java -XmxXXXXM -version<br/>不断加大-Xmx的大小，截止到出现以下提示：<br/>Could not create the Java virtual machine.<br/><br/><strong>二、Nginx配置</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>&nbsp;&nbsp; location / &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; root /var/www/app.cn;<br/>&nbsp;&nbsp;&nbsp;&nbsp; index index.jsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://localhost:8080;<br/>&nbsp;&nbsp;&nbsp;&nbsp; include /usr/local/nginx/conf/proxy.conf;<br/>&nbsp;&nbsp; &#125;<br/><br/>&nbsp;&nbsp; location ~* &#92;.(jsp&#124;do&#124;shtml)$ &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; root /var/www/app.cn;<br/>&nbsp;&nbsp;&nbsp;&nbsp; index index.jsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; include /usr/local/nginx/conf/proxy.conf;<br/>&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://localhost:8080;<br/>&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Real-IP $remote_addr;<br/>&nbsp;&nbsp; &#125;<br/><br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以代理的方式进行整合，静态文件继续由Nginx来解析，扩展名为jsp&#124;do&#124;shtml才丢给后端resin来处理。即使resin发现的故障，前端最多只会报500、502 time out的信息。<br/><br/><strong>三、resin配置</strong><br/><br/>1、jvm的优化<br/>#vi $resin_root/bin/httpd.sh<br/><textarea name="code" class="c" rows="15" cols="100">
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"
</textarea><br/>&nbsp;&nbsp;&nbsp;&nbsp;1.1、Xmx与Xms建议配置一致，避免每次垃圾回收完成后JVM 重新分配内存。预留2G左右的内存空间给Nginx与OS就差不多了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;1.2、Xmn配置成Xmx的1/3。<br/>&nbsp;&nbsp;&nbsp;&nbsp;1.3、Dsun.net.inetaddr.ttl=60，java对DNS解析域名结果进行缓存，默认超时时间为-1（在重启JVM前永久缓存），如有涉及域名解析失效需修改该值。<br/><br/>2、resin并发数限制<br/>免费的resin是没有pro的授权，并发连接数(默认512)配置参数不可见。因此通过修改源码达到突破限制的目的。<br/> 1、修改方法：<br/>&nbsp;&nbsp;&nbsp;&nbsp;1.1、下载resin3.0.22源码;<br/>&nbsp;&nbsp;&nbsp;&nbsp;1.2、修改resin-3.0.22/modules/resin/src/com/caucho/server/port/Port.java<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// default timeout<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private long _timeout = 65000L;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int _connectionMax = 512;修改成20480<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int _minSpareConnection = 16;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int _keepaliveMax = -1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int _minSpareListen = 5;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int _maxSpareListen = 10;<br/></div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;1.3、将编译后的Port.class覆盖原 /lib/resin.jar包。<br/> <br/> 2、可以从resin-status结果得到证实<br/><a href="https://blog.liuts.com/attachment.php?fid=129" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=129" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> <span style="color: #FF4500;">[编译前]</span></strong><br/>---------------------------------------------------------------------------------------------------------------------------<br/><a href="https://blog.liuts.com/attachment.php?fid=130" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=130" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #2E8B57;"> [编译后]</span></strong><br/><br/>3、resin.conf配置<br/><textarea name="code" class="c" rows="15" cols="100">
<dependency-check-interval>-1</dependency-check-interval>
</textarea><br/>生产环境建议关闭自检查 ，原因是会消耗系统一定资源及部分更新会出现不可意料的错误。<br/><br/><textarea name="code" class="c" rows="15" cols="100">
<!-- Maximum number of threads. -->
<thread-max>20480</thread-max>
</textarea><br/>建议与private int _connectionMax参数保持一致。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其它参数需根据应用的具体情况来调整，如长链接超时等。以上为本人整理一些调优笔记，如有遗漏或纠正请与我联系。<br/><br/>如大家有什么疑问或感兴趣的话题可以通过weibo与我交流：<a href="http://t.qq.com/yorkoliu" target="_blank">http://t.qq.com/yorkoliu</a><br/>Tags - <a href="https://blog.liuts.com/tags/resin/" rel="tag">resin</a> , <a href="https://blog.liuts.com/tags/%25E8%25B0%2583%25E4%25BC%2598/" rel="tag">调优</a>
]]>
</description>
</item>
</channel>
</rss>