【常见问题】关于 CPU 拉满导致 DataEase 服务异常无法访问的解决方案


Administrator
飞致云 发布于 2022-06-15 / 673 阅读 / 0 评论 /
背景DataEase 默认安装包自带了 Kettle 及 Doris,这两个组件在进行数据同步及大量的数据查询时会造成大量的 CPU 资源的消耗,资源耗尽的情况下会影响 DataEase 本身应用的正常运行,针对此问题,我们需要对 Kettle 及 Doris 进行 CPU 资源的使用限制,防止因资

背景

DataEase 默认安装包自带了 Kettle 及 Doris,这两个组件在进行数据同步及大量的数据查询时会造成大量的 CPU 资源的消耗,资源耗尽的情况下会影响 DataEase 本身应用的正常运行,针对此问题,我们需要对 Kettle 及 Doris 进行 CPU 资源的使用限制,防止因资源耗尽导致应用无法访问的问题发生。

解决办法

docker-compose 内置了一个参数 cpus(容器可使用的cpu核数),用来限制容器的 cpu 资源使用情况,理想状态下,我们只需要修改 docker-compose-doris.yml、docker-compose-kettle.yml 这两个配置文件,分别对 doris-fe、doris-be、kettle 加上 cpus 的限制,即可解决该问题。如图所示:
image-1655282929443
image-1655282934415

实战测试

执行 for i in seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l); do dd if=/dev/zero of=/dev/null & done 命令将 doris-fe 容器的 CPU 打满,执行 docker stats 查看容器的 CPU 使用情况:
image-1655282940954

可以看到 doris-fe 的容器 cpu 使用率已经达到了 213% ,此时执行 top 查看服务器的整体 cpu 使用率:
image-1655282947093

可以看到,尽管 doris-fe 的容器的 CPU 使用率已经到了 200%+,但是宿主机的CPU使用率仍然有 30%+ 的空闲,此时我们尝试打开下 DataEase 的网页。
image-1655282953237

可以看到,使用直连模式制作的数据集,仪表板仍然可以正常打开,不受影响,但是 Excel 数据集等存储在 Doris 里的数据则无法正常打开,并且会超时。
image-1655282958175

小结

通过限制容器可使用的 cpus 方式可以有效的防止宿主机的 CPU 资源耗尽的问题,不影响服务的整体访问,但是在容器的 CPU 打满的情况下,使用定时同步数据集或 excel 数据集制作的仪表板查看时会加载缓慢甚至无法加载。

建议适当扩充服务器的资源配置,并结合 docker-compose 的 cpus 属性来一起使用,以此达到最佳的效果。



是否对你有帮助?