- 浏览: 1088590 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (30)
- Spring (14)
- iBATIS (6)
- Hibernate (13)
- JVM (5)
- JSON (10)
- Ajax (5)
- Flex (1)
- JavaScript (25)
- PowerDesigner (4)
- 项目管理 (7)
- 数据库 (29)
- 生活 (18)
- 软件应用 (21)
- 无线技术 (2)
- Linux (39)
- TOP开发学习 (2)
- JAVA工具小TIPS (2)
- Java通用 (52)
- XML (3)
- 软件测试 (29)
- Maven (10)
- Jquery (1)
- 正则表达式 (3)
- 应用服务器 (15)
- Android (5)
- linux 和windowx 下 tomcat 设置JVM (8)
- 应用服务器 连接池 (4)
- Linux 后台输出中文乱码 (1)
- Hadoop (28)
- python (2)
- Kafka (7)
- Storm (5)
- Elasticsearch (7)
- fddd (1)
最新评论
-
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
分布式消息系统Kafka初步 -
小灯笼:
LoadRunner性能测试实战课程网盘地址:http://p ...
LoadRunner性能测试应用(八) -
成大大的:
Kafka分布式消息系统实 ...
分布式消息系统Kafka初步 -
hulalayaha2:
Loadrunner性能测试视频教程下载学习:http://p ...
LoadRunner性能测试应用(八) -
993042835:
搞好 谢谢
org.hibernate.exception.ConstraintViolationException: could not delete:
在resin.conf中设置最大值 threadmax
2007年11月07日 评论(0)|浏览(7) 点击查看原文
以下方案我是在Intel xeon(至强) 3.2G 2个双核物理CPU+2G内存(Ecc)上进行:
resin版本为resin-pro-3.0.21,JVM为Jrockit 1.5_06, resin java 启动参数 -Xms256m -Xmx512m
1. 以下为resin.conf配置
<!--
- Resin 3.0 configuration file.
-->
<resin xmlns="http://caucho.com/ns/resin"
xmlns:resin="http://caucho.com/ns/resin/core">
<!--
- Logging configuration for the JDK logging API.
-->
<log name="" level="all" path="stdout:" timestamp="[%H:%M:%S.%s] "/>
<logger name="com.caucho.java" level="config"/>
<logger name="com.caucho.loader" level="config"/>
<dependency-check-interval>600s</dependency-check-interval>
<javac compiler="internal" args=""/>
<thread-pool>
<thread-max>10240</thread-max>
<spare-thread-min>50</spare-thread-min>
</thread-pool>
<min-free-memory>5M</min-free-memory>
<server>
<class-loader>
<tree-loader path="${resin.home}/lib"/>
<tree-loader path="${server.root}/lib"/>
</class-loader>
<keepalive-max>1024</keepalive-max>
<keepalive-timeout>60s</keepalive-timeout>
<resin:if test="${resin.isProfessional()}">
<select-manager enable="true"/>
</resin:if>
<bind-ports-after-start/>
<http server-id="" host="*" port="80"/>
<cluster>
<srun server-id="" host="127.0.0.1" port="6802"/>
</cluster>
<resin:if test="${resin.isProfessional()}">
<persistent-store type="cluster">
<init path="session"/>
</persistent-store>
</resin:if>
<ignore-client-disconnect>true</ignore-client-disconnect>
<resin:if test="${isResinProfessional}">
<cache path="cache" memory-size="20M"/>
</resin:if>
<web-app-default>
<class-loader>
<tree-loader path="${server.root}/ext-webapp"/>
</class-loader>
<cache-mapping url-pattern="/" expires="60s"/>
<cache-mapping url-pattern="*.gif" expires="600s"/>
<cache-mapping url-pattern="*.jpg" expires="600s"/>
<servlet servlet-name="directory"
servlet-class="com.caucho.servlets.DirectoryServlet">
<init enable="false"/>
</servlet>
<allow-servlet-el/>
<session-config>
<enable-url-rewriting>false</enable-url-rewriting>
</session-config>
</web-app-default>
<host-default>
<class-loader>
<compiling-loader path="webapps/WEB-INF/classes"/>
<library-loader path="webapps/WEB-INF/lib"/>
</class-loader>
<!--access-log path="logs/access.log"
format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
rollover-period="1W"/-->
<web-app-deploy path="webapps"/>
<ear-deploy path="deploy">
<ear-default>
<!-- Configure this for the ejb server
-
- <ejb-server>
- <config-directory>WEB-INF</config-directory>
- <data-source>jdbc/test</data-source>
- </ejb-server>
-->
</ear-default>
</ear-deploy>
<resource-deploy path="deploy"/>
<web-app-deploy path="deploy"/>
</host-default>
<resin:import path="${resin.home}/conf/app-default.xml"/>
<host-deploy path="hosts">
<host-default>
<resin:import path="host.xml" optional="true"/>
</host-default>
</host-deploy>
<host id="" root-directory=".">
<web-app id="/" document-directory="d:\website\chat">
</web-app>
</host>
</server>
</resin>
2. 在应用的web.xml中加入resin status查看servlet映射
1
2
3
4
<servlet-mapping servlet-class='com.caucho.servlets.ResinStatusServlet'>
<url-pattern>/resin-status</url-pattern>
<init enable="read"/>
</servlet-mapping>
3. 启动resin,确认应用正常启动。
4. 写访问测试程序
import java.io.InputStream;
import java.net.URL;
public class TestURL
{
public static void main(String[] args) throws Exception
{
long a = System.currentTimeMillis();
System.out.println("Starting request url:");
for(int i = 0; i < 10000; i++){
URL url = new URL("http://192.168.1.200/main.jsp");
InputStream is = url.openStream();
is.close();
System.out.println("Starting request url:"+i);
}
System.out.println("request url end.take "+(System.currentTimeMillis()-a)+"ms");
}
}
5. 在Jbuilder中执行TestURL
在执行过程中,一边刷新http://192.168.1.200/resin-status,查看resin状态,在http://*:80 中的 Active Threads 和 Total,会一直增长,当长到512的时候不再增长,这时再刷新resin-status页面时,会发现打开很慢。原因是服务器已经达到最大连接数,在等待前面连接的释放而不能接受新的连接。
于是下载Resin 3.0.21源码,搜索 512,发现com.caucho.server.port.Port类中有以下代码:
// default timeout
private long _timeout = 65000;
private int _connectionMax = 512;//就是这行,查找resin所有源码后,发现没有对这个值进行设置
private int _minSpareConnection = 16;
private int _keepaliveMax = -1;
private int _minSpareListen = 5;
private int _maxSpareListen = 10;
将_connectionMax 改为 20480,然后重新编译并替换resin.jar中的Port类。
6. 重新启动Resin,再次运行TestURL进行测试,这次你会发现Threads Active 和 Total 一直变大,且可以超过512一直增大,在测试程序运行过程中刷新页面,页面响应性能还是不错的.
另,测试过程中Resin会打印出 1-3次 强制执行GC的信息,属于正常。
7.待测试完毕,Threads Active 和 Total 马上降为1.Idle为9,总内存为536.87Meg 空闲内存为480.33M
再经多次测试,结果一致,内存回收正常,表明当前 resin 稳定性和响应性可靠。
本文由 Java开发者(Chinajavaworld.com)享有版权,转载请注明出自 JAVA开发者(http://www.chinajavaworld.com)
> 在resin.conf中设置最大值。
>
> hread-pool>
> <!-- Maximum number of threads. -->
> <thread-max>128</thread-max>
>
> <!-- Minimum number of spare connection threads.
> -->
> <spare-thread-min>25</spare-thread-min>
> /thread-pool>
>
> 需要考虑的是,每个线程需要一个stack。
> 高压力服务,内存才是瓶颈。
> 在32位系统中,resin只能使用2G内存。
>
> 其实128已经足够用了:)
引用Resin的文档
Stack size
Each thread in the VM get's a stack. The stack size will limit the number of threads that you can have, too big of a stack size and you will run out of memory as each thread is allocated more memory than it needs.
The Resin startup scripts (httpd.exe on Windows, wrapper.pl on Unix) will set the stack size to 2048k, unless it is specified explicity. 2048k is an appropriate value for most situations.
JVM option passed to Resin Meaning
-Xss the stack size for each thread
-Xss determines the size of the stack: -Xss1024k. If the stack space is too small, eventually you will see an exception class java.lang.StackOverflowError .
Some people have reported that it is necessary to change stack size settings at the OS level for Linux. A call to ulimit may be necessary, and is usually done with a command in /etc/profile:
Limit thread stack size on Linux
1
ulimit -s 2048
-Xss=1M可以指定stack为1M,理论上计算128线程就用了128M,但实际上的占用还要少得多,我在2G的内存机器上(经过TCP优化)进行高负载测试,最高跑到了4000多个线程。
发表评论
-
打开“添加和删除程序”时报错:0x00310030,该内存不能为"writ
2012-05-09 18:08 919打开“添加和删除程序”时报错:0x00310030,该内存不能 ... -
只要三步就能找回被删除并清空的文件 转的
2011-03-22 09:06 976只要三步就能找回被删除并清空的文件 步骤: 1、单击“开始 ... -
把文件下载到网络服务器上wget
2010-09-21 16:24 979连接到网络服务器 #cd /usr #wget 'h ... -
给你的mp3大换血 【很好听的歌】
2010-08-19 12:53 1116这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你 ... -
photoshop 30种PS技术 让你照片美到不行~婚纱照可以省一大笔钱了
2010-08-19 12:52 1922照片名称:调出照片柔和的蓝黄色-简单方法, 1、打 ... -
云计算:程序员重回个人英雄时代
2010-07-16 13:55 843文/ 刘 鹏 曾几何时,那些耳熟能详的程序英雄的名字渐渐地 ... -
如何通过TCPIP端口为系统添加网络打印机(转)
2010-07-09 09:16 4196转自 http://www.xici.net/main.asp ... -
php计划任务的实现
2010-07-06 10:23 8038php计划任务的实现 (zt) ... -
Windows下用cmd命令安装及卸载服务
2010-06-29 11:41 2233第一种方法: 1. 开始 ->运行 ->cm ... -
Loadrunner 8.1 测试利器相关下载及破解方法(精)转
2010-06-22 14:29 3602Loadrunner 8.1 测试利器相关下载及破解方法(精) ... -
resin优化经验
2010-04-22 17:34 19062008-02-19 17:03 Resin T ... -
全球免费软件推荐(国外篇)
2010-04-21 14:25 1290本文是最优秀免费软件工具集合,我们划分为16个种类,其中包含了 ... -
myEclipse 6.5 中如何添加TCP/IP monitor
2010-04-15 17:44 2358myEclipse 6.5 中如何添加TCP/IP monit ... -
脑图软件推荐——PersonalBrain(转)
2010-03-14 10:40 2223脑图软件推荐——Persona ... -
别树一帜的思维图软件:PersonalBrain(转)
2010-03-12 22:20 2885别树一帜的思维图软 ... -
在tomcat中设置编码格式
2010-02-23 13:49 4443在tomcat中设置编码格式 <Conn ... -
三条命令让你xp启动如飞
2010-02-11 13:58 855三条命令让你xp启动如飞1、 ... -
你的电脑不再是蜗牛--加速绝招
2010-02-11 13:45 1520你的电脑不再是蜗牛--加速绝招 电脑速度慢 1 ... -
电脑其实很好玩,玩好了其实很无耻
2010-02-11 13:38 789电脑其实很好玩,玩好了其实很无耻 步骤:1、单击“开始 ... -
想让你的迅雷下载速度提高4倍吗?
2010-02-11 13:32 3714想让你的迅雷下载速度提高4倍吗? 1.首先打开迅雷的安 ...
相关推荐
在本文中,我们将详细介绍 xorg.conf 文件的配置详解,包括其目录结构、section 类型、选项名称和选项值等。 目录结构 -------- 在 Linux 系统中,Xorg.conf 文件所在的目录结构是非常重要的。下面是 X11R7 中的...
play frameword application.conf
在Linux系统中,`xorg.conf` 文件是配置X Window系统的核心配置文件之一。它控制着图形界面的显示方式,包括分辨率、颜色深度、键盘鼠标等输入设备的设置等。本文将深入探讨`xorg.conf`文件的具体内容及其在Linux...
// generated by named-bootconf.pl options { directory "/var/named"; // 如果防火墙存在且需要与特定的名字服务器通信,则可能需要取消注释以下query-source指令。 // BIND8.1 默认使用未特权限端口,而之前的...
在Linux系统中,尤其是CentOS 6.7版本,配置网络连接时,有时会遇到一些问题,例如在`/etc/resolv.conf`文件中修改DNS地址后,重启系统或网络服务,这些更改不会生效。这个问题通常与网络服务的管理方式有关,特别是...
如果需要调整音量、静音状态或其他参数,可以在`asound.conf`中添加相应的控制条目。 在实际应用中,为了使WM8960正常工作,可能还需要进行以下步骤: 1. **内核配置**:确保在内核配置中选中了对WM8960的支持。 2....
这个参数设置用户时钟的最大频率。建议将其添加到系统启动脚本中。 7. debug.exception-trace = 1 这个参数可以开启或关闭segfault的默认开启。如果设置为0,将关闭segfault。 8. net.unix.max_dgram_qlen = 10 ...
redis.conf Redis配置文件 下载 redis.conf 配置详解 Redis配置文件redis.conf 详解1.基本配置内存单位的表示# 1k => 1000 bytes# ...Redis 的详细介绍Redis 的下载地址
snmpd.conf配置文件 送给同学 用在nagios上面
nginx.conf配置文件,反向代理,负载均衡--轮询、权重、IPHASH等
vhost.conf apache主机的配置 centos7服务器的配置,
redis配置文件redis.conf
redis.conf 6.0版本配置文件
**方法一** 是通过创建一个名为 `/etc/resolvconf/resolv.conf.d/tail` 的文件来保持DNS设置。首先,需要使用命令 `sudo vi /etc/resolvconf/resolv.conf.d/tail` 创建并编辑这个文件。然后,在这个文件中添加你需要...
nginx.conf配置文件下载
1. 把default.conf放入codeblocks目录中;这里的codeblock目录不是安装包文件夹,而是C盘下的,…AppData\Roaming\CodeBlocks。 2. 注意把原来的配置文件打包一份,防止配置错误导致codeblock无法使用; 3. 把配置好...
魔兽世界单机中文说明worldserver
redis.conf配置文件下载
httpd-ssl.conf
在 smb.conf 文件中,我们还可以使用一些高级参数来控制 Samba 的行为,例如我们可以使用 "security" 参数来设置 Samba 的安全级别,我们可以使用 "browseable" 参数来设置共享目录的浏览权限等。 smb.conf 文件是 ...