现在有一套 alibaba cloud 全家桶的项目,基于 nacos 和 spring cloud loadbance 的。
目前观察到一个现象,某个服务存在 2 个实例,大部分请求都跑到了某个实例,且这个实例负载较高。 另外一个实例基本都在摸鱼。
从业务上讲,这个服务的调用并不频繁,但每次调用都需要花费一定的 cpu 内存和时间 去处理。
我感觉是调用频次太低导致默认的均衡规则没啥用,导致请求都转发到 服务实例列表中的第一个实例了。
现在有一套 alibaba cloud 全家桶的项目,基于 nacos 和 spring cloud loadbance 的。
目前观察到一个现象,某个服务存在 2 个实例,大部分请求都跑到了某个实例,且这个实例负载较高。 另外一个实例基本都在摸鱼。
从业务上讲,这个服务的调用并不频繁,但每次调用都需要花费一定的 cpu 内存和时间 去处理。
我感觉是调用频次太低导致默认的均衡规则没啥用,导致请求都转发到 服务实例列表中的第一个实例了。
|
lsk569937453Jun 20, 2023
1
那就把负载均衡调整为随机啊
|
|
hhjswfJun 20, 2023
2
轮循呗,有可能你没配置对
|
|
imv2erJun 20, 2023
3
同步的提高响应时间的权重
异步的。。。比较麻烦 可以用点投机取巧的办法 |
|
xuanbgJun 20, 2023
4
我都是无脑平均分配
|
|
5
感觉你不需要 loadblance ,你需要 map-reduce ,以导出 100W 数据为例,那么按照实例数量 2 拆分成 2 个 50W 的任务并行处理,最后在文件层面 merge 成一个。
|
|
Pil0tXiaJun 20, 2023
6
感觉楼上的就是最好的解决方案了,但是从内存层面讲,一次性合并 4 个 25W 的文件对内存来说也不轻松,不过没有 JVM 里的对象了,可以少一半的内存占用(有没有一半也不知道)。如果内存还不够,可能得分批合并,然后在合并的时候把其它内存负载转移到别的 pod 上去。
还有优化的办法吗? |