2.0GA版本importer导入少量数据也会报timeout

  • nebula 版本:2.0 GA
  • 部署方式(分布式 / 单机 / Docker / DBaaS):Docker-Compose单机部署
  • 问题的具体描述
    通过Studio csv 文件工具上传仅一千多个节点信息,很快就报timeout,我登进importer容器看过,172.23.0.3就是importer的ip,也能ping通10.1.31.9,但就是会报timeout,请问会是什么原因?谢谢
2021/04/02 03:49:54 [ERROR] httpserver.go:207: error code: 200, message: Client(0) fails to execute commands (USE `anti_fraud`;), error: read tcp 172.23.0.3:42288->10.1.31.9:9669: i/o timeout

@jievince @jerry.liang @NicolaCage @hetao 大佬们来看看这个数据导入超时的问题呀

执行到最后一步导数据报的错误么?最后一步导入的日志截图贴一下?

是的,前面提示校验正确,最后一步报错的

在nebula-web-docker目录,输入docker-compose ps,看下importer服务是否正常
cc: @yee 来看看

我是用portainer调用的compose文件

importer容器也能docker exec进去

我把nebula和studio各自用的compose文件也贴一下吧,主要就是改了自定义的volume

  • nebula
version: '3.4'
services:
  metad0:
    image: vesoft/nebula-metad:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=metad0
      - --ws_ip=metad0
      - --port=9559
      - --ws_http_port=19559
      - --data_path=/data/meta
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://metad0:19559/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9559
      - 19559
      - 19560
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/meta0:/data/meta
      - /tpdata/hofmann/docker/nebula-graph/data/logs/meta0:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  metad1:
    image: vesoft/nebula-metad:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=metad1
      - --ws_ip=metad1
      - --port=9559
      - --ws_http_port=19559
      - --data_path=/data/meta
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://metad1:19559/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9559
      - 19559
      - 19560
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/meta1:/data/meta
      - /tpdata/hofmann/docker/nebula-graph/data/logs/meta1:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  metad2:
    image: vesoft/nebula-metad:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=metad2
      - --ws_ip=metad2
      - --port=9559
      - --ws_http_port=19559
      - --data_path=/data/meta
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://metad2:19559/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9559
      - 19559
      - 19560
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/meta2:/data/meta
      - /tpdata/hofmann/docker/nebula-graph/data/logs/meta2:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  storaged0:
    image: vesoft/nebula-storaged:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=storaged0
      - --ws_ip=storaged0
      - --port=9779
      - --ws_http_port=19779
      - --data_path=/data/storage
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://storaged0:19779/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9779
      - 19779
      - 19780
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/storage0:/data/storage
      - /tpdata/hofmann/docker/nebula-graph/data/logs/storage0:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  storaged1:
    image: vesoft/nebula-storaged:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=storaged1
      - --ws_ip=storaged1
      - --port=9779
      - --ws_http_port=19779
      - --data_path=/data/storage
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://storaged1:19779/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9779
      - 19779
      - 19780
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/storage1:/data/storage
      - /tpdata/hofmann/docker/nebula-graph/data/logs/storage1:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  storaged2:
    image: vesoft/nebula-storaged:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --local_ip=storaged2
      - --ws_ip=storaged2
      - --port=9779
      - --ws_http_port=19779
      - --data_path=/data/storage
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://storaged2:19779/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9779
      - 19779
      - 19780
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/data/storage2:/data/storage
      - /tpdata/hofmann/docker/nebula-graph/data/logs/storage2:/logs
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  graphd:
    image: vesoft/nebula-graphd:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --port=9669
      - --ws_ip=graphd
      - --ws_http_port=19669
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://graphd:19669/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - "9669:9669"
      - 19669
      - 19670
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/logs/graph:/logs
      - /tpdata/hofmann/docker/nebula-graph/data/nebula-graphd.conf:/usr/local/nebula/etc/nebula-graphd.conf
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  graphd1:
    image: vesoft/nebula-graphd:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --port=9669
      - --ws_ip=graphd1
      - --ws_http_port=19669
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://graphd1:19669/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9669
      - 19669
      - 19670
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/logs/graph1:/logs
      - /tpdata/hofmann/docker/nebula-graph/data/nebula-graphd.conf:/usr/local/nebula/etc/nebula-graphd.conf
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

  graphd2:
    image: vesoft/nebula-graphd:v2.0.0
    environment:
      USER: root
      TZ:   "${TZ}"
    command:
      - --meta_server_addrs=metad0:9559,metad1:9559,metad2:9559
      - --port=9669
      - --ws_ip=graphd2
      - --ws_http_port=19669
      - --log_dir=/logs
      - --v=0
      - --minloglevel=0
    depends_on:
      - metad0
      - metad1
      - metad2
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://graphd2:19669/status"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
    ports:
      - 9669
      - 19669
      - 19670
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/logs/graph2:/logs
      - /tpdata/hofmann/docker/nebula-graph/data/nebula-graphd.conf:/usr/local/nebula/etc/nebula-graphd.conf
    networks:
      - nebula-net
    restart: on-failure
    cap_add:
      - SYS_PTRACE

networks:
  nebula-net:
  • studio
version: '3.4'
services:
  client:
    image: vesoft/nebula-http-gateway:v2
    environment:
      USER: root
    ports:
      - 8080
    networks:
      - nebula-web
  web:
    image: vesoft/nebula-graph-studio:v2
    environment:
      USER: root
      UPLOAD_DIR: ${MAPPING_DOCKER_DIR}
    ports:
      - 7001
    depends_on:
      - client
    volumes:
      - ${UPLOAD_DIR}:${MAPPING_DOCKER_DIR}:rw
    networks:
      - nebula-web
  importer:
    image: vesoft/nebula-importer:v2
    networks:
      - nebula-web
    ports:
      - 5699
    volumes:
      - ${UPLOAD_DIR}:${MAPPING_DOCKER_DIR}:rw
    command:
      - "--port=5699"
      - "--callback=http://nginx:7001/api/import/finish"
  nginx:
    image: nginx:alpine
    volumes:
      - /tpdata/hofmann/docker/nebula-graph/data/nginx/nginx.conf:/etc/nginx/conf.d/nebula.conf
      - ${UPLOAD_DIR}:${MAPPING_DOCKER_DIR}:rw
    depends_on:
      - client
      - web
    networks:
      - nebula-web
    ports:
      - 7001:7001

networks:
  nebula-web:

nebula graph 也是用的容器化部署,直接让 studio 和 nebula graph 共用同一个 network 就好了,不必再把 port 映射到 host 然后在从 host 绕回来。

你先在 portainer 中创建一个 network,然后把上面的两份 compose 文件的 network 的名字换成你创建的网络

两个docker-compose 用了不同的 network,可以启动一个 docker-compose 后,docker network ls 查看network 是什么,然后在另一个 compose 里配置:

networks:
  {查到的network}:
     external: true

也可以先手动创建 network,在两个 compose 里都改一下。

我创建了外部network并在两个compose中共用

networks:
  nebula-net:
    external: true

Studio连接的时候地址填写的是nebulagraph_graphd_1:9669
仍然报错如下(确认过172.24.0.10是nebulagraph_graphd_1的地址):

你现在的情况是,studio 可以连接上 nebula graph 但是 导入的时候 importer 连不上?

是的,从importer容器能够ping通graphd容器,就最后导入那一步不行

稍等我们本地拿你的配置验证一下

我先后在本地的 Linux 系统和 macOS 系统上验证了容器化部署的 studio 和 nebula graph,均可以正常的导入,没能复现你的问题,我的操作步骤如下,你参考看看是否有什么不同:

clone studio 和 nebula-docker-compose

$ git clone --branch v2.0.0 --depth 1 https://github.com/vesoft-inc/nebula-docker-compose.git
$ git clone --branch master --depth 1 https://github.com/vesoft-inc/nebula-web-docker.git

在外部创建 docker 的 network

$ docker network create nebula-net
$ docker network ls  # 检查是否创建成功

部署 nebula graph

进入到 nebula-docker-composer 目录,修改其中的 docker-compose.yaml 文件,在其最后添加如下的内容:

 networks:
   nebula-net:
     external: true

external: true 表示使用外部的名为 nebula-net 的网络。

然后启动容器:

$ docker-compose up -d

部署 studio

进入到 nebula-web-docker/v2 目录,编辑其中的 docker-compose.yaml 文件,然后替换文件中的所有 nebula-webnebula-net, 并在文件最后如上添加:external: true。然后启动容器:

$ docker-compose up -d

浏览器访问

在浏览器中输入 127.0.0.1:7001 便可以访问到 studio 的页面了。页面中输入如下的地址便可进入到 studio 的操作界面:

在操作界面首先创建对应的图空间 space:

CREATE SPACE nba(vid_type=FIXED_STRING(8));

然后选择图空间 nba 之后再创建对应的 TAG/EDGE,比如

CREATE TAG player(name string, age int);

导入

在上述的 schema 创建好后就可以选择导入了,我这边导入成功的页面如下:

2 个赞

还是不行,搜了一下,和这个帖子还有这个帖子的现象完全一致

在 B 站上传了一个使用 docker compose 部署的视频,你参考一下:

https://www.bilibili.com/video/BV1T54y1b7pa/

需要再次跟你确认一下的事,timeout 是刚开始导入就报错还是导入到中间报错?另外,你磁盘是 ssd 还是 hdd?什么操作系统?

能否去 graphd 对应的 logs 目录看看是否有出错信息?看看有没有对应的导入语句?

从web界面来看第一行就是timeout,未见到其它输出,从时间上来看是点击导入按钮后大约十秒左右

磁盘是hdd,Centos7,不过我导入的csv很小,就几百KB

整个导入过程中graphd的log文件中没有报错的信息,只有impoter有timeout信息

看起来是 importer 开始就没有能够连接上,你可以更新一下本地的镜像再次验证看一下:

  1. 检查 nebula graph 的 docker image 的 tag 是否是 v2.0.0
  2. 重新使用 docker-compose pull 所有的 studio 的 image

再次登陆验证

谢谢回复,也感谢@HarrisChu的提示

是dockerhub的阿里云镜像上http-gateway和importer镜像版本滞后的问题
将镜像切换到官方仓库并更新到最新版本后问题解决了,有问题的镜像版本主要是:

vesoft/nebula-http-gateway    v2                  78b17e0f8ddf        2 months ago        53.9 MB
vesoft/nebula-importer        v2                  449a1e9e2871        3 months ago        14.9 MB
2 个赞