
普通的 java web 项目,在一个多核心的服务器上部署多个实例有意义吗?
假如环境: 服务器:32c64g 容器:tomcat
在这样的情况下: 1 个 tomcat1 个应用 1 个 tomcat10 个相同应用 10 个 tomcat1 个应用
这 3 个效果是差不多的吗?运维层面需要针对这种多核部署多个应用有意义吗?
1 night98 2022-10-06 01:42:41 +08:00 1 个 tomcat1 个应用 1 个 tomcat10 个相同应用 10 个 tomcat1 个应用 非要选的话,最后一个吧 第一种其实还行,最简单,无非是如果要求最佳性能的情况下,需要对 tomcat 默认参数进行调整 第二个,没啥意义,徒增复杂度 第三种,理解了半天,应该意思是部署 10 个 tomcat ,里面部署相同的应用吧 这种冗余程度最高,只要主机不挂基本能保持对外服务,但是你 32C64G 应该用不到部署这么多实例吧 没啥高可用的要求的情况下,选第一种就行了,大概率你们服务也不会有太高的并发,调下 jvm 最大堆大小基本上就没啥要调整的了,实在要调整的话改下 tomcat 默认线程数基本上就完事了 |
2 rrfeng 2022-10-06 04:31:10 +08:00 via Android 单机多实例也就平滑升级有点用。jvm 又不是只能用单核的。 |
3 wangritian 2022-10-06 04:48:31 +08:00 如果 web 程序是多线程或线程+协程混合工作,启动 1 个进程即可 如果是纯协程或全异步事件驱动工作,启动多个进程可以提高性能,数字以压测为准 |
4 xuanbg 2022-10-06 08:42:45 +08:00 一般情况下,在同一台物理主机上部署多个相同应用的实例没什么意义。因为 tomcat 又不是单线程的,有并发的请求进来,tomcat 也会并发处理。 如果是为了充分利用机器的性能,可以部署多个不同的应用。如果是为了容灾,那就多部署几台物理主机。 |
5 Jiajin 2022-10-06 10:40:23 +08:00 应用不中断升级角度来说有用,其他基本无用 |
6 lmshl 2022-10-06 10:56:42 +08:00 via iPhone 理论上来说应该是“ 1 个 tomcat1 个应用”性能最好,线程池会探查操作系统核数的,如果应用是协程开发的话更应该这样了。 实际上部署 2-3 个都是可以接受的,但更多属实没必要 |
7 DonaldY 2022-10-06 11:29:53 +08:00
|