引自:http://itfeng.blog.techweb.com.cn/archives/2007/2007101315013.shtml
近期一直烦与WEB服务器的性能问题,常常www.fqf.cn网站出现内存溢出而导致web服务器停止的现象,对于一个商业网上来说,是个急需要解决的问题。
这两天采用了国外一个不过的内存溢出检测软件,对网站进行测试,发现网站启动开始占用内存就飘升,3分钟内几乎能达到60M(蓝色曲线,红色代表服务器提供给web使用的内存空间JVM),
解决办法中,首先想到就是检查程序本身是否存在某些代码没有释放资源,修改代码,处理常见的资源释放后,情况有所好转,启动的一段时间内能保持20M占用,但是时间长了,尤其白天人数多的时候,占用率也是节节上升,当突破64M(红色线)时,系统就报内存溢出,web服务器停止。
查询了Rexin的运行情况,发觉是分配内存不会在继续增加:
resin-status
Server: | |
Config: | D:\resin\conf\resin.conf |
Server Start: | Fri, 24 Nov 2006 13:42:51 +0800 (CST) |
Server Reload: | Fri, 24 Nov 2006 13:42:54 +0800 (CST) |
Total Memory: | 65.47Meg |
Free Memory: | 8.44Meg |
Invocation Hit Ratio: | 40.38% (4258/10543) |
Proxy Cache Hit Ratio: | 0.00% (0/22) |
Threads Config
Active Idle Total thread-max spare-thread-min
2 | 32 | 34 | 128 | 25 |
这样一来,修改代码不能根本解决问题,因为人数多的时候,的确需要一定量的内存空间。所以接着考虑如何提升JVM内存空间问题,按照文章的说法,在Resin目录的bin/httpd.sh文件,修改启动选项,对args=""修改为args="-Xms512M -Xmx1526M" 无论在本机试还是在服务器试,均无效,最后多次尝试,找到启动办法,就是在将resin加入系统服务的时候,同时加入参数,代替将参数写入启动文件中: httpd.exe -install -Xms512M -Xmx1526M 。本地测试可行,到web服务器却失败,奇怪中找了另外一台服务器做测试,发觉可行,启动后能分配522M内存:
resin-status
Server: | |
Config: | D:\resin\conf\resin.conf |
Server Start: | Fri, 24 Nov 2006 11:10:19 +0800 (CST) |
Server Reload: | Fri, 24 Nov 2006 11:10:19 +0800 (CST) |
Total Memory: | 532.80Meg |
Free Memory: | 499.62Meg |
Invocation Hit Ratio: | 91.66% (154/168) |
Proxy Cache Hit Ratio: | 0.00% (0/2) |
Threads Config
Active Idle Total thread-max spare-thread-min
11 | 29 | 40 | 128 | 25 |
仔细分析一下,发觉web服务器在分配内存时报错,是服务器自身不足512M空闲内容分配给Resin(具体原因不清楚,估计是Oracle数据库同时在用,所以能用的资源不多了),于是改为初始佩服64M,最大为512M:
resin-status
Server: | |
Config: | D:\resin\conf\resin.conf |
Server Start: | Fri, 24 Nov 2006 13:42:51 +0800 (CST) |
Server Reload: | Fri, 24 Nov 2006 13:42:54 +0800 (CST) |
Total Memory: | 122.11Meg |
Free Memory: | 20.23Meg |
Invocation Hit Ratio: | 42.19% (39812/94356) |
Proxy Cache Hit Ratio: | 0.00% (0/22) |
Threads Config
Active Idle Total thread-max spare-thread-min
23 | 29 | 52 | 128 | 25 |
内存分配问题终于解决,由表格可以看到,系统能分配给JVM的内存一百多M左右而已,不过这个数能让服务器安全的运行了一天,庆幸庆幸进一步解决。
另外,学网上例子,测试了服务器的页面连接处理情况:
public static void main(String[] args) {
test test = new test();
try {
long a = System.currentTimeMillis();
System.out.println("Starting request url:");
for (int i = 0; i < 10000; i++) {
java.net.URL url = new java.net.URL("http://www.fqf.cn:8088/list.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");
}catch(Exception e){
e.printStackTrace();
}
}
发觉,开始请求的时候很快,达到一百多的时候,显然变得慢起来,按照文章说明,是由于线程(并发数)的问题,检查了resin的配置文件,发现线程(后来才知道是并发数)默认是128,改为10240如:
<keepalive-max>10240</keepalive-max>
启动后,看到resin状态,启动测试程序到500多的时,页面开始响应变慢,到此为止,至少提升了并发数方面。
resin-status
Server: | |
Config: | D:\resin\conf\resin.conf |
Server Start: | Fri, 24 Nov 2006 11:51:39 +0800 (CST) |
Server Reload: | Fri, 24 Nov 2006 11:51:40 +0800 (CST) |
Total Memory: | 231.47Meg |
Free Memory: | 71.74Meg |
Invocation Hit Ratio: | 99.66% (1197/1201) |
Proxy Cache Hit Ratio: | 0.00% (0/1) |
Threads Config
Active Idle Total thread-max spare-thread-min
466 | 81 | 547 | 10240 | 25 |
参考了相关文档,后来发现Resin源码有个地方写的数据值是512,也就是说明Resin自身对最大数做了限制。
分享到:
相关推荐
**Resin配置文件详解** Resin是一款高性能、轻量级的Java应用服务器,它支持Servlet、JSP、EJB以及Web服务等技术。在Resin的运行过程中,配置文件起着至关重要的作用,它们定义了服务器的行为、部署的应用程序、...
### Resin 3.1 配置文件解析与说明 #### 一、概述 Resin 是一款高性能且功能丰富的 Java 应用服务器和 Web 服务器,由 Caucho Technology 开发。Resin 3.1 版本是该系列中的一个稳定版本,广泛应用于企业级应用...
### Eclipse 下 Resin 服务器配置详解 #### 一、引言 Resin 是一款高性能的 Java 应用服务器,常用于开发与部署 Java Web 应用。本文将详细介绍如何在 Eclipse IDE 中配置 Resin 服务器,使开发者能够更加高效地...
3. **配置 Resin 配置文件**: - 在 `resin.conf` 文件中添加以下配置以启用 HTTPS 端口 8443: ```xml <ssl>true ``` #### 七、总结 通过上述步骤,您可以成功地在 Resin 3.0 中配置 HTTPS 服务。...
### Resin配置详解 #### 一、Resin简介与配置 Resin是一款高效且功能强大的应用服务器,它支持多种Web应用技术,包括Servlet、JSP、HTTP服务等。Resin的特点在于其高度优化的设计,使其在处理高并发请求时表现出色...
### MyEclipse 下 Resin 服务器配置详解 #### 背景介绍 Resin 是一款高性能、高稳定性的 Java 应用服务器与 Web 服务器,适用于企业级应用开发。MyEclipse 是一款集成了 Eclipse 的高级功能且面向 JavaEE 的集成...
在这个场景中,我们将探讨如何配置`openssl`以生成本地主机(localhost)的证书,并将其应用于`Resin4`的配置文件中。 首先,我们需要使用`openssl`来创建自签名证书。这个证书将用于`localhost`,以便在本地开发和...
在本文中,我们将深入探讨Resin配置的详细内容,包括虚拟目录、MyEclipse集成、集群配置以及其他重要特性。 1. **虚拟目录配置**: 虚拟目录允许你在Resin中映射不同的物理目录到Web应用程序的不同URL路径。在配置...
本主题将深入探讨如何在Linux环境下利用Resin配置多个集群应用,以实现高可用性和负载均衡。我们将通过分析标题和标签以及提供的脚本文件名来构建相关知识点。 首先,让我们理解“Resin配置多个集群应用”的概念。...
resin详细配置说明,包括resin的安装配置、使用方法等。
### Resin配置文件中文说明解析 #### 一、概述 Resin是一款高性能的企业级Java应用服务器,它提供了全面的功能和良好的性能,适用于多种部署环境。本文档将对`Resin.conf`配置文件进行详细的中文说明,帮助用户更...
### Eclipse Resin 配置详解 #### 一、Resin简介与应用场景 Resin是一款功能强大的Java应用服务器和Web容器,由Caucho技术公司开发。它提供了高性能、高可靠性和丰富的特性集,广泛应用于企业级Java应用的部署场景...
下面将详细介绍Resin配置中的几个关键点。 1. **Resin默认端口配置** 默认情况下,Resin独立的Web服务器监听HTTP请求的端口是8080,而用于Apache或IIS插件的监听端口是6802。这些配置可以在`conf/resin.conf`文件...
### Windows下Resin的配置与部署详解 #### 一、Resin简介 Resin是由CAUCHO公司开发的一款高性能Web服务器及应用服务器,它不仅支持Servlets 2.3和JSP 1.2标准,还能高效处理静态内容,其性能可与Apache相媲美。此外...
首先,我们要明确Resin的配置文件主要包含`resin.conf`,这是Resin服务器的核心配置文件,包含了服务器的基本设置,如端口、日志、应用上下文路径等。在Windows系统中,通常可以在Resin安装目录的`conf`子目录下找到...
### Resin 4.0 配置文件介绍与解析 #### 一、Resin 4.0 启动概述 **Resin 4.0** 是一款高性能的应用服务器,适用于部署 Java 应用程序。本章节主要介绍了 Resin 的启动过程、启动前的准备条件以及在不同操作系统上...
resin服务器配置指南,实现resin服务均衡。前台服务均衡
c)对 E:\sssssssss \resin\conf\resin.conf 文件进行配置 - 11 - d)80端口修改: - 16 - e)默认发布目录修改: - 16 - f)多虚拟主机: - 16 - g)多端口设置: - 17 - (3) Resin与Eclipse整合 - 17 - 2. Linux - 18 -...
这篇博客文章“resin中关于日志的配置”着重讲解了如何在Resin服务器上管理和配置日志系统,这对于监控应用状态、调试问题以及优化性能至关重要。下面将详细阐述相关知识点。 1. **日志的重要性**: - 日志记录了...
### Eclipse配置Resin详解 #### 引言 在IT领域,服务器配置与开发环境的兼容性至关重要。本文将深入解析如何在Eclipse IDE中配置Resin应用服务器,以支持Java Web项目的开发与运行。Resin是一款高效且功能丰富的...