Dgraph部署

部署

本文討論以分布式的模式運(yùn)行Dgraph,包括運(yùn)行多實(shí)例的Dgraph,并將多個(gè)server構(gòu)建成一個(gè)集群

1. 安裝Dgraph

github上下載需要的發(fā)行版,并解壓即可

2.簡(jiǎn)單集群構(gòu)建

2.1 理解Dgraph集群

Dgraph是一個(gè)真正的分布式圖數(shù)據(jù)庫(kù),而不是以master-slave模式復(fù)制數(shù)據(jù)全集的。它根據(jù)謂語分片,并在集群中備份謂語,查詢可以在任何節(jié)點(diǎn)上執(zhí)行,連接是基于分布式的數(shù)據(jù)執(zhí)行的。查詢節(jié)點(diǎn)自己存儲(chǔ)的謂語會(huì)在本地執(zhí)行,而對(duì)于存在其他節(jié)點(diǎn)上的謂語,會(huì)使用分布式的join

為了更有效地運(yùn)行Dgraph集群,理解shard、replica以及rebalance時(shí)怎么工作的很重要

2.1.1 Sharding

Dgraph把每個(gè)謂語(在RDF術(shù)語中寫作* P *)的數(shù)據(jù)存在一起,因此最小的數(shù)據(jù)單元時(shí)一個(gè)謂語。為了把圖分片,需要把一個(gè)或多個(gè)謂語分配到一個(gè)group。集群中的每個(gè)節(jié)點(diǎn)都存有一個(gè)group,zero負(fù)責(zé)把group分配給各個(gè)節(jié)點(diǎn)

2.1.2 Shard rebalancing

Dgraph的zero會(huì)試著基于磁盤使用情況進(jìn)行rebalance。如果Zero檢測(cè)到數(shù)據(jù)分布不平衡的情況,它會(huì)試著把某個(gè)謂語以及它的index、反向邊一起轉(zhuǎn)移到磁盤使用最少的group上。這可能會(huì)導(dǎo)致這個(gè)謂語暫時(shí)不可用

Zero會(huì)不斷地檢查數(shù)據(jù)分布,每十分鐘一次。因此,每個(gè)的Dgraph實(shí)例都會(huì)允許Zero從group中分離某個(gè)謂語,并將它轉(zhuǎn)移到一個(gè)新的節(jié)點(diǎn)上

2.1.3 一致性Replication

如果把--replicas標(biāo)志設(shè)置為大于一的整數(shù),Zero會(huì)把group分配到多個(gè)node上。這些節(jié)點(diǎn)將組成一個(gè)Raft group,被稱作quorum。每個(gè)寫操作將會(huì)被一致地復(fù)制到quorum上。為了保證數(shù)據(jù)一致性,quorum的大小應(yīng)該時(shí)奇數(shù)。因此,我們推薦把--replicas設(shè)置為1、3或5。這允許0、1或者2個(gè)存儲(chǔ)同一個(gè)group的節(jié)點(diǎn)宕機(jī)而不影響group的健康

2.2 直接在host上跑

2.2.1 運(yùn)行dgraph zero

$ dgraph zero --my=IPADDR:7080 --wal zw

默認(rèn)的Zero端口是7080與8080,7080時(shí)Dgraph集群內(nèi)部不同節(jié)點(diǎn)之間數(shù)據(jù)交互的Grpc端口,而8080是與外部程序數(shù)據(jù)交互的HTTP端口。你可以使用--port_offset標(biāo)志改變這些端口

--my標(biāo)志是Dgraph與zero聯(lián)系的撥號(hào)盤,因此端口7080以及IP地址必須對(duì)其他Dgraph服務(wù)器是可見的

如果想查看所有可用的flag,執(zhí)行:dgraph zero --help

2.2.2 運(yùn)行dgraph server

dgraph server --idx=2 --memory_mb=<typically half the RAM>
--my=IPADDR:7081 --zero=localhost:7080 --port_offset=1

Dgraph服務(wù)器監(jiān)聽內(nèi)部端口7080,以及外部HTTP端口8080、外部Grpc端口9080。這些可以通過--port_offset標(biāo)志指定

注意--idx標(biāo)志可以省略,省略的話Zero將會(huì)自動(dòng)地為每個(gè)Dgraph server分配一個(gè)唯一的ID,Dgraph服務(wù)器會(huì)將它持久化到wal目錄中

可以使用-p-w修改文件及WAL的存儲(chǔ)位置,具體可以執(zhí)行dgraph server --help

2.2.3 運(yùn)行Dgraph UI

$ dgraph-ratel -p 8081

Dgraph UI默認(rèn)監(jiān)聽8081端口,可以使用-p標(biāo)志來修改。默認(rèn)情況下,ratel會(huì)假設(shè)dgraph在localhost:8080端口運(yùn)行,可以在ui中修改這個(gè)地址

注意 ratel需要訪問Amazon下載css與js

2.3 高可用性配置

在高可用性配置中,我們需要運(yùn)行三個(gè)或五個(gè)Zero,以及三個(gè)或五個(gè)server

注意

如果replica的數(shù)量是2K+1,至多K個(gè)server宕機(jī)的情況下,讀寫可以不受任何影響

避免把replica設(shè)置為2K(偶數(shù)),這樣如果K個(gè)服務(wù)器宕機(jī),將會(huì)導(dǎo)致阻塞讀寫

2.3.1 Dgraph Zero

運(yùn)行三個(gè)實(shí)例,并通過--idx給每一個(gè)分配一個(gè)唯一ID,并通過--peer發(fā)送一個(gè)健康的Zero實(shí)例的地址(會(huì)自動(dòng)加入集群?像redis那樣?)

為了讓server實(shí)例保存三個(gè)復(fù)制,設(shè)置--replicas=3。每當(dāng)添加一個(gè)新的Dgraph服務(wù)器,Zero將會(huì)檢查已有的group,并給它們分配一個(gè)復(fù)制數(shù)不是三的group

依次啟動(dòng)三個(gè)zero:

./dgraph zero --idx 100  --port_offset 100 --my 10.181.105.100:7180 --wal ../data/zw --replicas 3
./dgraph zero --idx 101  --port_offset 100 --my 10.181.105.101:7180 --peer 10.181.105.100:7180 --wal ../data/zw --replicas 3
./dgraph zero --idx 102  --port_offset 100 --my 10.181.105.102:7180 --peer 10.181.105.101:7180 --wal ../data/zw --replicas 3

2.3.2 Dgraph Server

Run as many Dgraph servers as you want??梢允謩?dòng)設(shè)置--idx標(biāo)志,如果不設(shè)的話也可以,Zero 會(huì)給server自動(dòng)分配一個(gè)id。這個(gè)id將會(huì)被保存在wal中,所以不要?jiǎng)h除wal

新的server會(huì)聯(lián)系z(mì)ero自動(dòng)檢測(cè)其他的server,并互相建立連接。通常,Zero首先會(huì)通過分配一個(gè)server運(yùn)行已有的group來嘗試復(fù)制一個(gè)group。如果所有的分組都已經(jīng)安裝 —replicas標(biāo)志復(fù)制好了,Zero會(huì)創(chuàng)建一個(gè)新的分組。隨著時(shí)間的發(fā)展,數(shù)據(jù)會(huì)被均勻地被分割到不同的group中。因此,需要確保Dgraph server的數(shù)量是replication設(shè)置的整數(shù)倍。

例如,如果在Zero中設(shè)置--replicas=3,那么運(yùn)行三個(gè)server的話,不會(huì)有sharding,但是有3x的復(fù)制。如果運(yùn)行六個(gè)serer,那么會(huì)把數(shù)據(jù)shard到兩個(gè)group中,仍然有3x復(fù)制

依次啟動(dòng)三個(gè)server:

./dgraph server --idx 200 --port_offset 200 --memory_mb 51200 --my 10.181.105.100:7280 --zero 10.181.105.102:7180 --postings ../data/p --wal ../data/w
./dgraph server --idx 201 --port_offset 200 --memory_mb 51200 --my 10.181.105.101:7280 --zero 10.181.105.100:7180 --postings ../data/p --wal ../data/w
./dgraph server --idx 202 --port_offset 200 --memory_mb 51200 --my 10.181.105.102:7280 --zero 10.181.105.101:7180 --postings ../data/p --wal ../data/w

2.3.4 移除死節(jié)點(diǎn)

如果一個(gè)人復(fù)制壞掉,并且不能被恢復(fù),可以移除它并向quorum中添加一個(gè)新節(jié)點(diǎn)。Zero中的/removeNode可以用于移除死節(jié)點(diǎn)(/removeNode?id=3&group=2)

注意

在使用API之前,必須先確定節(jié)點(diǎn)宕了,并確保它不會(huì)再恢復(fù)了

在添加新復(fù)制的時(shí)候,記得設(shè)置idx標(biāo)志,否則Zero會(huì)給它設(shè)置一個(gè)新的分組

3. 從源碼構(gòu)建

確保安裝了Go (version >= 1.8)

之后,執(zhí)行:

# This should install dgraph binary in your $GOPATH/bin.
$ go get -u -v github.com/dgraph-io/dgraph/dgraph

如果在build的時(shí)候,報(bào)了grpc的錯(cuò),你的go-grpc版本可能太老了。我們不提供go-groc(因?yàn)樵谑褂肎o client的時(shí)候它會(huì)有問題)。通過運(yùn)行如下命令更新go-grpc

$ go get -u -v google.golang.org/grpc

4. More about Dgraph

在http端口上,一個(gè)運(yùn)行中的Dgraph實(shí)例有一系列的管理終端:

  • / Browser UI and query visualization.
  • /health HTTP status code 200 and “OK” message if worker is running, HTTP 503 otherwise.
  • /admin/shutdown shutdown a node.
  • /admin/export take a running export.

默認(rèn)情況下,server會(huì)監(jiān)聽localhost(只有本機(jī)可見的本地環(huán)網(wǎng)地址),可以使用 --bindall=true 選項(xiàng)綁定到 0.0.0.0 ,監(jiān)聽外部鏈接

注意 如果你準(zhǔn)備load大量數(shù)據(jù),把最大文件描述符設(shè)置為像10000這樣的大值

5. More about Dgraph Zero

Dgraph Zero控制Dgraph集群。它會(huì)基于每個(gè)實(shí)例存儲(chǔ)數(shù)據(jù)的大小自動(dòng)地在集群中移動(dòng)數(shù)據(jù)

在運(yùn)行任何dgraph server之前,必須至少有一個(gè)dgraph zero

  • Zero存儲(chǔ)集群的信息
  • --replicas是控制復(fù)制因子的選項(xiàng)(例如每個(gè)數(shù)據(jù)分片的復(fù)制數(shù),包括原始分片)
  • 每當(dāng)一個(gè)新的機(jī)器啟動(dòng),zero會(huì)基于復(fù)制因子給它分配一個(gè)group。如果復(fù)制因子是1,那么每個(gè)節(jié)點(diǎn)都會(huì)保存不同的group。如果復(fù)制因子是2,摒棄啟動(dòng)了4個(gè)節(jié)點(diǎn),那么前面兩個(gè)節(jié)點(diǎn)會(huì)保存group1,后面兩個(gè)保存group2
  • Zero也會(huì)監(jiān)控每個(gè)group的謂語占用的空間大小,并會(huì)通過移動(dòng)它們來平衡集群

像Dgrph一樣,Zero也有使用HTTP端口8080(+port_offset)??梢酝ㄟ^查詢它來獲取有用的信息,如下:

  • /state 集群中節(jié)點(diǎn)的信息,包括謂語的size,以及它們所屬的組
  • /removeNode?id=idx&group=gid 用于從quorum中移除死掉的節(jié)點(diǎn),節(jié)點(diǎn)id與groupid是所需的參數(shù)

查看state信息:

{
  "counter": "26",
  "groups": {
    "1": {
      "members": {
        "200": {
          "id": "200",
          "groupId": 1,
          "addr": "10.181.105.100:7280",
          "leader": true,
          "lastUpdate": "1515398876"
        },
        "201": {
          "id": "201",
          "groupId": 1,
          "addr": "10.181.105.101:7280"
        },
        "202": {
          "id": "202",
          "groupId": 1,
          "addr": "10.181.105.102:7280"
        }
      },
      "tablets": {
        "_dummy_": {
          "groupId": 1,
          "predicate": "_dummy_",
          "space": "19"
        }
      }
    }
  },
  "zeros": {
    "100": {
      "id": "100",
      "addr": "10.181.105.100:7180",
      "leader": true
    },
    "101": {
      "id": "101",
      "addr": "10.181.105.101:7180"
    },
    "102": {
      "id": "102",
      "addr": "10.181.105.102:7180"
    }
  }
}

6. 配置

可以用--help參數(shù)查看zero與server的所有配置項(xiàng)

可以通過多種方式進(jìn)行配置(按優(yōu)先級(jí)從高到低):

  • 使用命令行標(biāo)志
  • 使用環(huán)境變量
  • 使用配置文件

多種配置方式可以同時(shí)使用,例如配置文件用于保存核心信息,命令行標(biāo)志用于為每個(gè)實(shí)例制定參數(shù)

環(huán)境變量本人不推薦使用,不翻譯了

配置文件支持的格式包括JSON、TOML、YAML、HCL以及Java properties,通過文件擴(kuò)展名識(shí)別

配置文件可以通過--config標(biāo)簽或者環(huán)境變量指定,例如:

$ dgraph zero --config my_config.json

配置文件的結(jié)構(gòu)就是簡(jiǎn)單的鍵值對(duì),例如JSON格式配置文件如下:

{
  "idx": 42,
  "peer": 192.168.0.55:9080,
  "replicas": 2
}

7. TSL配置

client到server之間的連接可以通過TLS提高安全,支持加密(密碼保護(hù))與非加密私鑰

如果你使用openssl生成加密私鑰,必須明確指定加密算法(例如-aes256)。這回強(qiáng)制openssl在私鑰中包含DEK-Info頭,這需要Dgraph解密key。如果使用默認(rèn)加密方式,openssl不會(huì)寫頭,因此key無法被解密

server有如下參數(shù)可以配置:

# Use TLS connections with clients.
tls_on

# CA Certs file path.
tls_ca_certs string

# Include System CA into CA Certs.
tls_use_system_ca

# Certificate file path.
tls_cert string

# Certificate key file path.
tls_cert_key string

# Certificate key passphrase.
tls_cert_key_passphrase string

# Enable TLS client authentication
tls_client_auth string

# TLS max version. (default "TLS12")
tls_max_version string

# TLS min version. (default "TLS11")
tls_min_version string

Dgraph loader可以通過如下參數(shù)設(shè)置:

# Use TLS connections.
tls_on

# CA Certs file path.
tls_ca_certs string

# Include System CA into CA Certs.
tls_use_system_ca

# Certificate file path.
tls_cert string

# Certificate key file path.
tls_cert_key string

# Certificate key passphrase.
tls_cert_key_passphrase string

# Server name.
tls_server_name string

# Skip certificate validation (insecure)
tls_insecure

# TLS max version. (default "TLS12")
tls_max_version string

# TLS min version. (default "TLS11")
tls_min_version string

8. 集群Checklist

在創(chuàng)建集群的時(shí)候,確保檢查了如下項(xiàng):

  • 是不是至少一個(gè)dgraph zero節(jié)點(diǎn)在運(yùn)行
  • 是否集群中的每個(gè)實(shí)例都被正確配置
  • 是不是每個(gè)實(shí)例都能通過7080 (+ any port offset)訪問所有peer
  • 是不是每個(gè)節(jié)點(diǎn)在啟動(dòng)的時(shí)候都有一個(gè)唯一ID
  • 是不是設(shè)置了 --bindall=true

9. 快速數(shù)據(jù)導(dǎo)入

有兩個(gè)工具可以進(jìn)行數(shù)據(jù)批量導(dǎo)入:

  • dgraph live
  • dgraph bulk

注意

這兩個(gè)工具都只能接受gzip壓縮的RDF NQuad/Triple數(shù)據(jù)。其他格式的數(shù)據(jù)必須先轉(zhuǎn)換

9.1 Live Loader

dgraph live是一個(gè)從gzip壓縮文件中讀取RDF Nquads,把它們分批,使用go client創(chuàng)建mutation,并導(dǎo)入Dgraph的工具

Live loader可以正確地給多個(gè)文件中的空節(jié)點(diǎn)分配唯一ID,并將它們持久化到磁盤,以節(jié)省內(nèi)存并應(yīng)付loader重新執(zhí)行的情況

$ dgraph live --help # To see the available flags.

# Read RDFs from the passed file, and send them to Dgraph on localhost:9080.
$ dgraph live -r <path-to-rdf-gzipped-file>

# Read RDFs and a schema file and send to Dgraph running at given address
$ dgraph live -r <path-to-rdf-gzipped-file> -s <path-to-schema-file> -d <dgraph-server-address:port>

9.2 Bulk Loader

注意

調(diào)整bulk loader的參數(shù)以提高性能非常重要

Bulk loader的功能與live loader很像,但是只能被用于dgraph離線,并準(zhǔn)備初始化的情況。它不能運(yùn)行在一個(gè)已有的dgraph實(shí)例

警告

千萬不要在Dgraph服務(wù)啟動(dòng)的時(shí)候執(zhí)行bulk loader。用它把已有的數(shù)據(jù)導(dǎo)入一個(gè)新的Dgraph實(shí)例

Bulk loader比live loader快相當(dāng)多,但是它只被推薦用于大數(shù)據(jù)集初始化導(dǎo)入dgraph

可以參看read some technical details博客來了解技術(shù)細(xì)節(jié)

你需要決定集群中希望的dgraph實(shí)例的數(shù)量,并將reduce shard的數(shù)量設(shè)置為這個(gè)數(shù)。你還需要把map shard的數(shù)量至少設(shè)置為跟這個(gè)數(shù)相等(數(shù)量越大,bulk loader就會(huì)把謂語在reduce shard中分布的梗平均)

下面的例子,使用了2個(gè)reduce shard以及4個(gè)map shard:

dgraph-bulk-loader -r=goldendata.rdf.gz -s=goldendata.schema --map_shards=4 --reduce_shards=2
{
        "RDFDir": "goldendata.rdf.gz",
        "SchemaFile": "goldendata.schema",
        "DgraphsDir": "out",
        "LeaseFile": "LEASE",
        "TmpDir": "tmp",
        "NumGoroutines": 4,
        "MapBufSize": 67108864,
        "ExpandEdges": true,
        "BlockRate": 0,
        "SkipMapPhase": false,
        "CleanupTmp": true,
        "NumShufflers": 1,
        "Version": false,
        "MapShards": 4,
        "ReduceShards": 2
}
MAP 01s rdf_count:219.0k rdf_speed:218.7k/sec edge_count:693.4k edge_speed:692.7k/sec
MAP 02s rdf_count:494.2k rdf_speed:247.0k/sec edge_count:1.596M edge_speed:797.7k/sec
MAP 03s rdf_count:749.4k rdf_speed:249.4k/sec edge_count:2.459M edge_speed:818.3k/sec
MAP 04s rdf_count:1.005M rdf_speed:250.8k/sec edge_count:3.308M edge_speed:826.1k/sec
MAP 05s rdf_count:1.121M rdf_speed:223.9k/sec edge_count:3.695M edge_speed:738.3k/sec
MAP 06s rdf_count:1.121M rdf_speed:186.6k/sec edge_count:3.695M edge_speed:615.3k/sec
MAP 07s rdf_count:1.121M rdf_speed:160.0k/sec edge_count:3.695M edge_speed:527.5k/sec
REDUCE 08s [22.68%] edge_count:837.9k edge_speed:837.9k/sec plist_count:450.2k plist_speed:450.2k/sec
REDUCE 09s [40.79%] edge_count:1.507M edge_speed:1.507M/sec plist_count:905.8k plist_speed:905.7k/sec
REDUCE 10s [79.91%] edge_count:2.953M edge_speed:1.476M/sec plist_count:1.395M plist_speed:697.3k/sec
REDUCE 11s [100.00%] edge_count:3.695M edge_speed:1.231M/sec plist_count:1.778M plist_speed:592.5k/sec
REDUCE 11s [100.00%] edge_count:3.695M edge_speed:1.182M/sec plist_count:1.778M plist_speed:568.8k/sec
Total: 11s

數(shù)據(jù)生成之后,你可以在啟動(dòng)server的時(shí)候使用-p參數(shù)指定輸出的目錄。如果運(yùn)行了多個(gè)Dgraph server,你需要把輸出的shard拷貝到不同的服務(wù)器上

cd out/i # i = shard number.
dgraph server -zero=localhost:7080 -memory_mb=1024

9.2.1 性能調(diào)優(yōu)

Tip

我們強(qiáng)烈推薦在執(zhí)行Bulk Loader的時(shí)候禁用swap空間。修復(fù)參數(shù)減少內(nèi)存使用,比swap導(dǎo)致loader宕機(jī)好

可以使用標(biāo)志來控制bulk loader的行為及性能特點(diǎn)。可以使用dgraph bulk --help查看所有的參數(shù)。特別要注意,需要調(diào)整參數(shù)使bulk loader不會(huì)使用超過RAM大小的內(nèi)存。一旦開始swap,它將變的特別慢

Map

在map語句中,修改下面的參數(shù)可以降低內(nèi)存使用:

  • --num_go_routines 標(biāo)志控制worker線程的數(shù)量,數(shù)值越小,占用的內(nèi)存越少
  • --mapoutput_mb 標(biāo)志控制map輸出文件的大小,數(shù)值越小,占用的內(nèi)存越少

對(duì)于更大的數(shù)據(jù)集,以及有很多core的服務(wù)器,map中的gzip解碼可能會(huì)成為瓶頸,可以首先把RDF拆分成多個(gè).rdf.gz文件(例如每個(gè)256MB)。這對(duì)內(nèi)存使用會(huì)有略微的影響

Reduce

Reduce語句對(duì)內(nèi)存的壓力比map小,盡管它仍然可能會(huì)使用很多內(nèi)存。有些參數(shù)可以提高性能,但是只有在你有很大的RAM的情況下使用:

  • --reduce_shards 控制產(chǎn)生的dgraph實(shí)例數(shù)。增大
  • The --map_shards flag controls the number of separate map output shards. Increasing this increases memory consumption but balances the resultant dgraph instances more evenly.
  • The --shufflers controls the level of parallelism in the shuffle/reduce stage. Increasing this increases memory consumption.

10. 導(dǎo)出

可以訪問集群中任意節(jié)點(diǎn)的終端,導(dǎo)出所有節(jié)點(diǎn)的數(shù)據(jù):

$ curl localhost:8080/admin/export

Warning 如果從dgraph運(yùn)行的服務(wù)器之外調(diào)用是無效的

Dgraph也提供了一個(gè)HTTP GET接口,可以在Dgraph運(yùn)行的服務(wù)器上調(diào)用

這個(gè)接口可以導(dǎo)出集群中所有的group的數(shù)據(jù)。每個(gè)服務(wù)器都會(huì)把輸出寫入到gzip壓縮的rdf文件,文件路徑可以通過--export參數(shù)指定。如果某個(gè)group失敗了,所有的export進(jìn)程都會(huì)失敗,并返回錯(cuò)誤

Note 用戶需要自己到集群中的服務(wù)器上拿導(dǎo)出的數(shù)據(jù)文件,Dgraph不會(huì)把文件拷到執(zhí)行導(dǎo)出的服務(wù)器

11. 關(guān)機(jī)

可以通過執(zhí)行如下命令,將一個(gè)Dgraph節(jié)點(diǎn)的安全退出:

curl localhost:8080/admin/shutdown

Warning 如果從運(yùn)行的dgraph之外的服務(wù)器執(zhí)行是無效的

這會(huì)停止執(zhí)行命令的服務(wù)器上的Dgraph,而不是停止整個(gè)Dgraph集群

12. 刪除數(shù)據(jù)庫(kù)

如果要?jiǎng)h除所有的數(shù)據(jù),可以使用Alter 終端的DropAll請(qǐng)求

或者,你也可以:

  • 關(guān)閉Dgraph,并等待所有寫入完成
  • 刪除pw目錄,然后
  • 重啟Dgraph

13. 升級(jí)Dgraph

周期性的數(shù)據(jù)導(dǎo)出是個(gè)好主意。特別是當(dāng)你希望升級(jí)數(shù)據(jù)庫(kù),或者重新配置集群的分片時(shí)。下面是數(shù)據(jù)安全導(dǎo)出與重啟的正確步驟:

  • 開啟一個(gè)導(dǎo)出任務(wù)
  • 確保導(dǎo)出成功
  • 關(guān)閉集群
  • 使用新數(shù)據(jù)目錄運(yùn)行Dgraph
  • 通過bulk loader重新導(dǎo)入數(shù)據(jù)
  • 如果都成功了,你可以刪除舊目錄(數(shù)據(jù)導(dǎo)出是為了保證數(shù)據(jù)安全)

14. 監(jiān)控

Dgraph通過/debug/vars終端以json格式返回監(jiān)控指標(biāo)。Dgraph不存儲(chǔ)監(jiān)控指標(biāo),只是返回當(dāng)時(shí)的值。你可以將數(shù)據(jù)存儲(chǔ)在監(jiān)控系統(tǒng),或者安裝Prometheus

將下面配置文件中的ip配置為你的dgraph實(shí)例,并用如下命令運(yùn)行prometheus:

$ prometheus -config.file my_config.yaml
scrape_configs:
  - job_name: "dgraph"
    metrics_path: "/debug/prometheus_metrics"
    scrape_interval: "2s"
    static_configs:
    - targets:
      - 172.31.9.133:8080
      - 172.31.15.230:8080
      - 172.31.0.170:8080
      - 172.31.8.118:8080

安裝Grafana用于繪制監(jiān)控指標(biāo)。Grafana默認(rèn)會(huì)在3000端口上運(yùn)行。用如下步驟創(chuàng)建一個(gè)prometheus數(shù)據(jù)源。通過如下鏈接導(dǎo)入一個(gè)grafana_dashboard.json

15. Troubleshooting

下面是一些常見的問題及解決辦法

15.1 OOM(out of memory)

在bulk loading數(shù)據(jù)的時(shí)候,Dgraph可能會(huì)消耗更多的內(nèi)存,因?yàn)闀?huì)有大量寫入。因此你可能會(huì)遇到OOM問題

推薦的最小RAM是16GB。當(dāng)使用默認(rèn)的—memory_mb=4096設(shè)置時(shí),Dgraph可能會(huì)占用7-8GB

在EC2/GCE實(shí)例上,我們推薦最小RAM是8GB。推薦將-memory_mb設(shè)置為RAM的一半

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,279評(píng)論 2 89
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,277評(píng)論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 一、人群畫像 1、核心用戶為80/90后的高學(xué)歷男性 2、不同年齡用戶熱議內(nèi)容 00后關(guān)注偶像及周邊;80后更關(guān)注...
    chris_418c閱讀 357評(píng)論 0 0
  • 27歲不算年輕但也不會(huì)太懵懂的年紀(jì),身邊朋友到27歲的大多孩子都幾個(gè)了。身處著的21世紀(jì),一點(diǎn)都不亞于當(dāng)年上海灘的...
    遇見子美一一閱讀 835評(píng)論 3 7

友情鏈接更多精彩內(nèi)容