在同一台服务器上安装多个Tomcat实例组成集群能否提高业务系统访问性能(并发量)?
如果性能瓶颈在网络带宽或数据库服务器处理能力上,效果不明显。
如果目前性能瓶颈在单主机的I/O、CPU、内存上的话,自然无法再支持新增Tomcat实例,无法组建集群。
在上述两项均没有问题的情况下,性能的瓶颈一般卡在tomcat的worker线程数上的话,虽然可以新增单Tomcat实例的内存、maxThreads等值来改善性能,但是太大有时反而影响效率。
因此在CPU及内存资源充足的情况下,即使在同一台服务器上建多个Tomcat实例组建集群,让每个Tomcat实例独享自己的内存(-Xmx),也可以显著提高业务系统的性能(并发量)。
注意采用Tomcat集群需要作统一会话处理,但是n个tomcat组成集群,共享Session的话,需要互相复制session,复制花费时间,影响性能。由于同一台服务器上组建Tomcat集群,不会有“一个Tomcat实例掉线,其它的实例可以平滑继续访问”这一集群优势,因此不必考虑Session复制的方案,建议采用nginx+Tomcat集群的方式,在nginx配置文件upstream段中加ip_hash,使得同一客户IP定向到后端同一Tomcat实例,避免session复制,提高性能。具体配置请参考“Windows下安装配置nginx+tomcat集群,布暑应用”。
目前,很多客户都将华丹开发平台在同一台服务器上通过nginx(或tengine)+Tomcat集群的方式布署,显著提高了性能。