linux下tomcat修改jvm内存

tomcat的内存占用很头疼,我在vz上测试,D1GB2G的测试默认启动占用600M+

catalina.sh中添加了
JAVA_OPTS='-Xms128m -Xmx512m'设置最小以及最大内存,但是启动还是发现占用内存是小+大的总和?不太明白这个机制,虽然不影响暂时的应用,但是为以后多开,还是调的小点较好吧。

Tomcat 据说被爆漏洞!

看到这个文章我没有实测过,但是看起来似乎是真的 :88:
CVE-2011-2204 Apache Tomcat信息泄漏
安全级别: 低 幸亏不是很“脸肿”哈
影响的版本:
Tomcat 7.0.0 to 7.0.16
Tomcat 6.0.0 to 6.0.32
Tomcat 5.5.0 to 5.5.33
漏洞描述:
当使用 MemoryUserDatabase (基于 tomcat-users.xml) 并通过 JMX 创建用户时,如果异常发生,那么在 JMX 的客户端上的错误提示将会包含用户的密码,这个错误信息同时也会写到 Tomcat 的日志文件中。

重现此漏洞的步骤:
Tomcat 安全团队很难重现这个问题,以至于他们不得不修改 Tomcat 源码,让它直接抛出一个异常出来。另外理论上,一个 OutOfMemoryError 会直接导致这个漏洞的发生。

解决的办法:
不通过 JMX 来管理 MemoryUserDatabase
使用摘要密码
限制 Tomcat 日志文件的访问
升级到 Tomcat 7.0.17, 6.0.33 or 5.5.34 或更新版本
打补丁:
7.0.x 补丁下载: http://svn.apache.org/viewvc?rev=1140070&view=rev
6.0.x 补丁下载: http://svn.apache.org/viewvc?rev=1140071&view=rev
5.5.x 补丁下载: http://svn.apache.org/viewvc?rev=1140072&view=rev

哈哈,其实我就不用这些东西,日志我还觉得费事呢! :89:

tomcat性能调试

今天看到Tomcat启动有三种模式

bio
默认的模式 blocking IO,性能非常低下,没有经过任何优化处理和支持.

 nio
利用java的异步io护理技术,no blocking IO技术.

apr
从操作系统级别来解决异步的IO问题,大幅度的提高性能.

据网上说 APR模式性能最好,但是没有数据就没有说服力,这几种模式我想在不同的需求下面会有不同的用处,所以并不一定说那个模式最好。

我从网上找到了关于BIO和NIO的测试报告,算是数据级别说服力吧。

=====================================================================

tomcat 6 NIO与BIO HTTP处理性能测试简报

tomcat性能比较

Tomcat的四种基于HTTP协议的Connector性能比较
<Connector port=”8081″ protocol=”org.apache.coyote.http11.Http11NioProtocol”                           connectionTimeout=”20000″ redirectPort=”8443″/>
<Connector port=”8081″ protocol=”HTTP/1.1″ connectionTimeout=”20000″
redirectPort=”8443″/>
<Connector executor=”tomcatThreadPool”
port=”8081″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />
<Connector executor=”tomcatThreadPool”
port=”8081″ protocol=”org.apache.coyote.http11.Http11NioProtocol”
connectionTimeout=”20000″
redirectPort=”8443″ />

我们姑且把上面四种Connector按照顺序命名为 NIO, HTTP, POOL, NIOP

为了不让其他因素影响测试结果,我们只对一个很简单的jsp页面进行测试,这个页面仅仅是输出一个Hello World。假设地址是 http://tomcat1/test.jsp

我们依次对四种Connector进行测试,测试的客户端在另外一台机器上用ab命令来完成,测试命令为: ab -c 900 -n 2000 http://tomcat1/test.jsp ,最终的测试结果如下表所示(单位:平均每秒处理的请求数):
NIO     HTTP     POOL     NIOP
281     65          208         365
666     66          110         398
692     65          66           263
256     63          94          459
440     67         145        363

由这五组数据不难看出,HTTP的性能是很稳定,但是也是最差的,而这种方式就是Tomcat的默认配置。NIO方式波动很大,但没有低于280 的,NIOP是在NIO的基础上加入线程池,可能是程序处理更复杂了,因此性能不见得比NIO强;而POOL方式则波动很大,测试期间和HTTP方式一样,不时有停滞。

由于linux的内核默认限制了最大打开文件数目是1024,因此此次并发数控制在900。

尽管这一个结果在实际的网站中因为各方面因素导致,可能差别没这么大,例如受限于数据库的性能等等的问题。但对我们在部署网站应用时还是具有参考价值的。