Nginx+resin调优文档[原创] 不指定

刘天斯 , 2010/06/12 12:05 , Resin , 评论(6) , 阅读(41050) , Via 本站原创 | |
       为什么不选择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

    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结果得到证实
点击在新窗口中浏览此图片
                                                       [编译前]
---------------------------------------------------------------------------------------------------------------------------
点击在新窗口中浏览此图片
                                                       [编译后]

3、resin.conf配置

生产环境建议关闭自检查 ,原因是会消耗系统一定资源及部分更新会出现不可意料的错误。


建议与private int _connectionMax参数保持一致。

       其它参数需根据应用的具体情况来调整,如长链接超时等。以上为本人整理一些调优笔记,如有遗漏或纠正请与我联系。

如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu
Tags: ,
平常心 Email
2011/03/25 13:57
刘哥,可以贴一个proxy.conf文件的内容不?
刘天斯 回复于 2011/03/25 16:19
仅供参考:# proxy.confproxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;client_body_buffer_size 128k;proxy_connect_timeout 90;proxy_send_timeout 90;proxy_read_timeout 90;proxy_buffers 32 4k;
平常心
2011/02/15 23:35
pro破解版的能与Nginx组合吗?
刘天斯 回复于 2011/02/15 23:57
可以。
2010/12/13 09:57
改成
private int _connectionMax = 512;修改成20480


这个最大连接数 为20480 和 resin-status 的结果
thread-max 10240 不相等啊。
我觉得resin-status 中的thread-max 也为20480 才好哦。

难道是源码当时修改为10240了?
刘天斯 回复于 2010/12/13 10:56
源码修改成20480,建议多个点同时来压效果会更明显。
kim
2010/09/04 16:36
我的thread上到2000,基本上就假死了。
刘天斯 回复于 2010/09/05 19:54
跟应用有很大的关系。
陈子
2010/07/19 15:25
location / {
     root /var/www/app.cn;
     index index.jsp;
你看下面这句?
     proxy_pass http://localhost:8080;
     include /usr/local/nginx/conf/proxy.conf;
   }
刘天斯 回复于 2010/07/19 19:55
这两行可以去掉。
陈子
2010/07/18 19:24
nginx配置里把所有的都透传给resin了呀?
刘天斯 回复于 2010/07/18 20:09
不是的,只是jsp、do、shtml扩展名,静态文件还是由Nginx负责处理。
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]