Tomcat的死穴
笔者应用tomcat从3.1开始,已经有10来年了。那时候tomcat刚刚并入apache基金会,出于apache影响力,在产品中选用了tomcat作为webmail服务。有几年,每天都跟tomcat打交到,只是最近几年才将tomcat抛弃不用。回顾用tomcat的历程,犹如一场梦魇,随着对tomcat彻底从产品铲除而结束。
Tomcat致命的缺陷有如下几个,相信用tomcat做过实际应用的都碰到过:
① 假死。高并发量的项目中,很容易造成内存不足而Tomcat没有任何征兆就自动停止。这种情况好多网友叫“假死”,网上可以搜到大量事例说明tomcat假死的状况,在实际应用还是比较普遍存在的:http://t.cn/zWaEyoS。
② 内存溢出。java.lang.OutOfMemoryError 。相信真正用过tomcat的人都碰到过。网上可以搜到大量事例:http://t.cn/zWaEJnk。
网上大量的资料说设置SET JAVA_OPTS=-Xms64m –Xmx1024m ,但笔者试过各种硬件环境下,各种操作系统下,基本没什么效果。Tomcat是常驻内存的,要想做到内存完全回收,零消耗那是绝无可能。假如tomcat每次消耗2k,1个100人的企业,每人每天邮件收发点击20次页面,2k*20*100 = 4M,默认设置的虚拟机内存只需要1周左右就会耗光了,这时候tomcat就会停止响应,出现假死现象,需要重启才能解决。您或许加大内存,即使再大,那也毕竟是有限的。严重的情况每天都需要重启,更有甚者,用户多的时候每个小时都需要重启。网上又有大量资料介绍如何定时重启,http://t.cn/zWaEjFi。一个系统需要重启才能维持运行,觉得这是一种无奈和悲哀。
用tomcat做办公OA应用也许是个不错的选择,OA毕竟在内网用的多,另外OA没有邮件那么消耗内存。用tomcat做webmail绝对是一场噩梦。如果你有坚强的体力和精力,能够随时在睡梦中一跃而起,或者在休假的时候能随时打开笔记本登录到服务器上重启,您可以尝试用tomcat JSP的做的webmail,一定会对您的减肥有帮助。