首页 > HZERO安装部署 > HZERO PaaS平台组装笔记(十二)内存调整

HZERO PaaS平台组装笔记(十二)内存调整

2025年11月5日

本文是H-ZERO 安装部署笔记,出于学习研究目的,刚开始按照开放平台->社区与合作伙伴->文档中心- 《HZERO 轻量版》技术文档进行部署实践,选择快速开始->微服务版进行安装; 但作为初学者, 水平太低, 由于轻量版合并了多个微服务,要改各种配置,过程中遇到多个困难,没有搞定🙂, 后来按照 开放平台->社区与合作伙伴->文档中心- 《HZERO汉得企业级PaaS平台》 技术文档进行 标准版(没有合并微服务的版本) 安装部署实践 ,安装部署成功了。本系列文章记录了这个过程。

需要说明的是,如果不是出于学习研究目的,是不需要这么麻烦的,技术中心有发发行版,可以一键安装,一小时不到可以全部安装完成。

本文是出于学习研究目的,按照技术文档从制品库里面拿各种零件进行组装,所以过程会比较繁琐,供学习研究参考。

实践系统环境:windows自带的Linux虚拟机 WSL ,linux版本在微软应用商店选择 Ubuntu22.04

十二、内存调整

查看Java进程堆内存

使用命令查看进程内存使用: jhsdb jmap –heap –pid 99556

看进程的分配内存,实际使用内存,剩余内存

按照保留剩余内存大约不低于30% 并且不低于100M的原则重新调整了各服务的启动内存配置。

查看中间件保留内存:

top -p $(pgrep redis)

或者

htop -p $(pgrep nginx | tr ‘\n’ ‘,’)

我们接下来研究最低的开发平台融合版所需要的最低内存:

试验数据如下:

豆包评价:

附5: 豆包的评价:

### 一、整体内存使用概况分析

从 `top` 命令输出看:

– 物理内存(Mem)总量约 `19866.3 MiB`(约 20GB ),已使用 `18472.8 MiB`,空闲 `1134.8 MiB` ,缓存占用 `258.8 MiB` ;交换分区(Swap)总量 `5120.0 MiB`,已使用 `4147.0 MiB`,空闲 `973.0 MiB` 。整体内存使用偏紧张,交换分区已有较多占用,若业务继续申请内存,可能因物理内存不足触发交换,影响性能。

### 三、总结与建议

– **内存是否够用**:当前系统内存整体紧张,物理内存剩余少,交换分区已大量使用,现有 Java 微服务若同时达 `xmx` 配置,内存大概率不够,需关注业务高峰及后续扩容。  

– **`xmx` 优化方向**:  

  – 调低 `ps-swagger`、`ps-interface` 等高配置、低使用的 `xmx` ,释放资源。  

  – 对接近 `xmx` 上限的服务(如 `ps-platform`、`ps-admin`  ),结合业务增长预期适度调高。  

  – 定期监控各服务堆内存使用峰值,根据实际负载动态调整 `xmx` ,同时考虑增加物理内存或优化服务内存占用(如代码优化、减少不必要对象创建 ),缓解系统内存压力。

最终建议:当前内存已到临界值,建议增加 8GB 物理内存;

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

我现在个人用,公司发的联想昭阳笔记本,默认是40G总内存,默认分配50%给WSL,也就是 20G内存,跑开发平台高低代码融合版,正好够用, 速度还挺快,连续开机2天2夜,系统日志没有出现OOM错误(可正常操作,比如自己个人使用做低代码开发),但再加集成平台或者 AI平台就抗不住了,会出现OOM内存溢出。 后面单跑集成平台的时候,可以把低代码的三个服务停掉,肯定是们没有问题的; 单跑AI平台,把低代码的三个服务停掉应该不够,应为微服务方面,AI平台内存消耗要比低代码多2G,AI平台还要加几个中间件服务,估计再20G基础上还得再加5G内存;


root@desktop-jacksen:~# grep -i “oom” /var/log/syslog
root@desktop-jacksen:~# top
top – 11:08:38 up 30 min, 1 user, load average: 0.26, 0.93, 2.58
Tasks: 52 total, 1 running, 51 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.8 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 19866.3 total, 192.7 free, 18740.5 used, 933.1 buff/cache
MiB Swap: 5120.0 total, 1625.7 free, 3494.3 used. 808.5 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3083 root 20 0 10.4g 1.2g 23260 S 2.3 6.4 9:23.41 java
7985 root 20 0 10.8g 1.7g 23924 S 2.3 8.6 6:10.39 java
3977 root 20 0 10.3g 1.4g 23712 S 2.0 7.0 6:15.60 java
8181 root 20 0 10.8g 1.5g 23912 S 2.0 7.8 5:17.99 java
1890 root 20 0 10.2g 802164 23180 S 1.7 3.9 5:39.81 java
7736 root 20 0 11.0g 1.6g 23960 S 1.7 8.2 6:17.97 java

具体实验:在启动了h0+workflow+lowcode之后,如果再起frontal 和 ORCHESTRATION服务的化,内存就严重不够了,会出现OOM kill , 两次发现模型服务被杀了;这种OOM导致的被杀,再微服务的日志里面没有任何异常,它是在正常写日志的情况下突然被杀的,要查证据就要看操作系统日志:

使用命令:

grep -i “oom” /var/log/syslog   可以看到:

Jul 18 17:00:32 desktop-jacksen kernel: [43061.488894] Out of memory: Killed process 359965 (java) total-vm:11392040kB, anon-rss:2057460kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:5340kB oom_score_adj:0

Jul 18 20:17:00 desktop-jacksen kernel: [53622.006409] Out of memory: Killed process 360680 (java) total-vm:11183648kB, anon-rss:2022436kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:4984kB oom_score_adj:0

另外就是实验发现:仅保留 h0+workflow+lowcode 18 个微服务时,20G内存能用,但如果做低代码开发,连续工作5小时,不断做各种业务对象、页面等开发,内存也能用光,如下:

top – 19:26:26 up 3:50, 1 user, load average: 0.44, 1.06, 0.74
Tasks: 52 total, 1 running, 51 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.4 us, 0.2 sy, 0.0 ni, 99.1 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 19866.3 total, 165.9 free, 19615.0 used, 85.4 buff/cache
MiB Swap: 5120.0 total, 0.0 free, 5120.0 used. 24.7 avail Mem

在这种极限情况下,没有出现OOM,但有的时候偶尔会卡,估计时内存不足的情况下等待IO 出现的。

还是建议:即便针对18个微服务,内存也比20G调整大一点,比如放到22G;

调整虚拟机内存:使用 PowerShell 调整 WSL 虚拟机内存大小的步骤如下,全程通过命令行操作,无需手动寻找文件路径:

步骤 1:打开 PowerShell
  • 按下 Win + X,选择「Windows PowerShell(管理员)」(或「终端(管理员)」并切换到 PowerShell 标签)。
步骤 2:创建或编辑 .wslconfig 配置文件

在 PowerShell 中执行以下命令,直接用记事本打开(或创建)配置文件:

notepad $env:USERPROFILE\.wslconfig

如果是首次配置,会提示 “无法找到文件”,点击「确定」创建新文件即可。

步骤 3:添加内存限制配置

在记事本中写入以下内容(根据需求修改参数):

[wsl2]

# 最大内存限制(可填 GB 或 MB,如 8GB、4096MB)

memory=30GB

# 可选:CPU 核心数限制(根据电脑实际核心数设置,如 12 核)

processors=12

# 可选:交换空间大小(默认是内存的 25%,可手动设置,如 8GB)

swap=8GB

  • 说明:memory 是核心参数,设置 WSL 能使用的最大内存;其他参数按需添加。
  • 写完后保存文件并关闭记事本。
步骤 4:重启 WSL 使配置生效

在 PowerShell 中执行命令,关闭所有 WSL 实例:

wsl –shutdown

  • 等待几秒后,重新打开 WSL(如 Ubuntu 终端),新的内存限制即可生效。
步骤 5:验证内存配置(可选)

在 WSL 终端中执行以下命令,查看内存总量是否与设置一致:

free -h

  • 输出结果中,Total 列的数值应接近配置的 memory 大小。

通过以上步骤,即可用 PowerShell 完成 WSL 内存大小的调整,适用于 WSL 2 版本(目前主流版本)。

 

 

关于作者:

昵称:Jack.shang
档案信息:jack.shang 程序员->项目经理->技术总监->项目总监->部门总监->事业部总经理->子公司总经理->集团产品运营支持
联系方式:你可以通过syfvb@hotmail.com联系作者
点击查看发表过的所有文章...
本文永久链接: http://blog.retailsolution.cn/archives/4738

 

 

对本文的评价:

 

 

分类: HZERO安装部署 标签:
本文的评论功能被关闭了.