** 问 题 **
传统用户部署HZERO需要3套,即DEV、UAT和PROD,每套系统我们一般会要求至少32-64G的内存供数据库+业务系统+,如果用户使用自有服务器,需要准备192G的内存资源,如果用户使用阿里云腾讯云等云服务器,即使所有微服务,数据库和缓存服务都部署在同一台服务器上,也将花费3000多元人民币每月每台,3台的每年花费就需要112720.68元,有一些较小的企业就望而却步了。
但是DEV环境和UAT环境又不需要使用那么多的CPU资源,所以其实如果使用新方案运行,仅需300多元每月即可完成DEV和UAT环境的部署,加上业务服务器总共花费:45245.88元每年,节约67474.8元每年,使得许多中小企业也可以接受相关的服务器成本,吸引他们购买H0平台以及相关附加服务。
老方案占用(许多服务已经触发xmx的内存回收,实际如果放开了占用会更高得多)
新方案我们使用了一些特殊的手段,由于hzero的绝大多数服务都使用了共用的包,比如mybatis+springboot+springcloud+eureka客户端+数据库连接等,他们如果运行在同一个操作系统中,不同的JAVA进程会初始化相同的类,并且重复占用内存和CPU,新的方案通过某些特殊手段节约了这部分内存,在不损失性能的前提下,不仅加快了启动速度,还在较大程度上减少了内存的占用,如下表所示,新方案在不触发内存回收的前提下,总计节约了43.55%的内存,如果都放开XMX使程序加载所有必要的内存,节约率将高达70%+。
新方案占用(均为触发xmx的内存回收,保证低内存高性能)
服务名称 | 传统方案 RSS(MB) | 新方案 RSS(MB) | 节约内存 | 节约比例
---|---|---|---|---
hzero-gateway.jar | 1843 | 504 | 1339 | 72.65%
hzero-admin.jar | 1527 | 796 | 731 | 47.87%
hzero-platform.jar | 1909 | 1198 | 711 | 37.24%
hzero-oauth.jar | 975 | 585 | 390 | 40.00%
hzero-interface.jar | 1449 | 1267 | 182 | 12.56%
hzero-lowcode.jar | 1767 | 1119 | 648 | 36.67%
hzero-modeler.jar | 1975 | 1281 | 694 | 35.14%
hzero-file.jar | 1291 | 415 | 876 | 67.85%
hzero-iam-saas.jar | 1329 | 774 | 555 | 41.76%
总计 | 14065 | 7939 | 6126 | 43.55%
** 问题 **
我们在新方案中采用了什么办法优化了内存和CPU占用(多选题0-4个正确选项)
A.使用特殊的环境变量指向相同的共用jar包以此降低内存负担
B.通过调整JDK和POM文件指向共同依赖使后续运行时可以找到相同的文件
C.在运行时通过JRE参数调整实现共用内存
D.使用了经过优化后的JVM