Tomcat NIO Configuration

Posted on Thu 10 January 2013 in it • Tagged with Tomcat, 性能测试

Netty HTTP Server相比Tomcat更加轻量之外,性能也会好得多,因为Tomcat默认是用的阻塞式IO。 到时候做性能比较测试时再增加一组打开非阻塞的Tomcat做对比,应该很有意思。

标准参数

protocol的取值: org.apache.coyote.http11.Http11Protocol - blocking Java connector org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector org.apache.coyote.http11.Http11AprProtocol - the APR/native connector.

Samples: <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" /> minProcessors ...


Continue reading

Tomcat 7 有价值的新特性

Posted on Wed 07 September 2011 in 我记 • Tagged with Tomcat

今天到tomcat主站上查资料,发现Tomcat7都出到7.0.21且已经stable一段时间了,不禁搜索了一下相关信息,整理中发现了几个很有价值的新特性。

内存泄露的侦测和防止

线上应用有长时间不重启会出现运行异常的情况,7的这个特性可能会改善这个问题,详细说明如下:

开发者在部署他们写的程序到生产环境上时,经常会遇到Pemgen错误:OutOfMemoryError。这是由于内存泄露而引起的。通常开发者是通过增大permgen内存的大小去解决或者就是重新启动Tomcat。 Tomcat 7包含了一个新的特性,它通过把不能垃圾回收的引用对象移走的方法,能解决一些Permgen内存泄露的问题。

如下情况下会触发内存泄露: JDBC驱动的注册 一些日志框架 在ThreadLocals中保存了对象但没有删除它们 启动了线程但没停止

在war文件外使用别名去存储静态内容

Web应用程序需要静态资源文件,比如象CSS,Javascript和视频文件、图片文件等。通常都把它们打包放在war文件中,这将增加WAR文件的大小并且导致很多重复的加载静态资源。

7允许使用新的aliases属性,指出静态文件资源的位置,可以通过使用Classloader.getResourceAsStream('/static/...')或者在链接中嵌入的方法让Tomcat去解析绝对路径,下面是一个在context.xml中配置的例子:

< ?xml version="1.0" encoding="UTF-8"? > < Context path="/Tomcat7demo" aliases="/static ...


Continue reading

Tomcat Connector connectionTimeout含义和验证

Posted on Wed 28 April 2010 in 我用(IT) • Tagged with Groovy, Tomcat

1. Tomcat配置

今天小戚发出一封邮件,说因为线上系统中tomcat的连接超时(connectionTimeout)设置成60ms,造成第三方访问公司的服务,总是502异常。

这个设置在$tomcat/conf/server.xml中

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="2000" disableUploadTimeout="true" />

2. 测试一下这个超时的含义

http://tomcat.apache.org ...


Continue reading