alibaba / nacos

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
https://nacos.io
Apache License 2.0
30.04k stars 12.8k forks source link

K8s 部署单节点 Nacos 2.4.1 CPU飙升 #12629

Open mianba opened 1 week ago

mianba commented 1 week ago

环境: kubernetes docker nacos/nacos-server:2.4.1 启动参数: JDK: 1.8-openjdk 客户端: 1.1.4 版本 老项目-自己调整jar包,重写了NamingProxy 数量 160个应用 2.4.1 版本 新项目-10几个项目 参数:-XX:SurvivorRatio=8 -Xms12g -Xmx12g -Xmn6g 只调整了 启动jvm 参数,其他通过官方提供的脚本启动,目前找不到飙升的原因

-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -Dnacos.standalone=true 现象:

  1. 容器CPU没有限制,最多占用100多个CPU image image

  2. 访问 前端UI 有明细卡顿 接口访问5秒左右

mianba commented 1 week ago

拉取日志发现 core-auth.log 日志较大,1天6G image 一直打印日志 /nacos/v1/ns/instance/list 等信息 image

KomachiSion commented 1 week ago

可以看一下login接口的调用量,是不是login接口有大量调用。

mianba commented 1 week ago

可以看一下login接口的调用量,是不是login接口有大量调用。

配置了下日志 com.alibaba.nacos.plugin.auth,发现日志量特别小

    <appender-ref ref="core-auth"/>
</logger>

另外,我用的客户端是1.1.4 调用 /v1/auth/login 没有发现大量的调用呢,通过日志

mianba commented 6 days ago

另外 由于测试环境Nacos 负载较高 客户端2.4.2,本地访问超时,在idea 设置以下参数不起作用 -Dnacos.remote.client.grpc.timeout=60000 -Dnacos.remote.client.grpc.server.check.timeout=60000 -Dnacos.remote.client.grpc.health.timeout=60000

XiaZhouxx commented 6 days ago

另外 由于测试环境Nacos 负载较高 客户端2.4.2,本地访问超时,在idea 设置以下参数不起作用 -Dnacos.remote.client.grpc.timeout=60000 -Dnacos.remote.client.grpc.server.check.timeout=60000 -Dnacos.remote.client.grpc.health.timeout=60000

你的客户端版本太低了 1.1.4应该是不支持grpc的吧

mianba commented 5 days ago

另外 由于测试环境Nacos 负载较高 客户端2.4.2,本地访问超时,在idea 设置以下参数不起作用 -Dnacos.remote.client.grpc.timeout=60000 -Dnacos.remote.client.grpc.server.check.timeout=60000 -Dnacos.remote.client.grpc.health.timeout=60000

你的客户端版本太低了 1.1.4应该是不支持grpc的吧

一、1.1.4 不支持grpc,使用的http 请求,根据jvm的分析,我发现有三个接口占用CPU比较大 /nacos/v1/ns/service/list /nacos/v1/ns/instance/beat /nacos/v1/ns/instance image 二、 我们java 用的cms 回收器,我看官网有说换成G1 ,请问老师是否可以调整成G1 三、 另外tomcat 线程数 是否需要网上调一下

mianba commented 5 days ago

看来这两篇,感觉跟这个很像 https://github.com/alibaba/nacos/issues/9859 请问这个问题修复了没 https://github.com/alibaba/nacos/issues/11609

KomachiSion commented 5 days ago

1.1.4客户端版本太低了, 不支持轻量心跳且不支持查空降级,

看起来是这两个问题导致心跳接口操作过多且查询了很多空服务(1s查一次)

建议客户端升级到1.4.X试一下。

mianba commented 5 days ago

1.1.4客户端版本太低了, 不支持轻量心跳且不支持查空降级,

看起来是这两个问题导致心跳接口操作过多且查询了很多空服务(1s查一次)

建议客户端升级到1.4.X试一下。

谢谢老师的回答,我们试一下 升级到1.4.x ,另外老师 由于我们框架是基于springboot 1.5.x+springcoud cloud alibaba 0.1.2构建的,如果不能升级到1.4.x 我们应该如何解决这个问题,修改源码吗

KomachiSion commented 6 hours ago

那可能只能基于1.1.4的客户端源码,修改部分这些接口调用频率后发布到内部仓库使用了。

客户端的api没有太大改动, 只要没有使用到nacos的inner api,应该不太会有升级问题。