1. JanusGraph概述与环境规划
JanusGraph是一款开源的分布式图数据库,支持大规模图数据存储和处理。JanusGraph使用Apache TinkerPop图计算框架,支持Gremlin查询语言,可以与多种存储后端(如Cassandra、HBase)和索引后端(如Elasticsearch)集成。更多学习教程www.fgedu.net.cn
1.1 JanusGraph版本说明
JanusGraph目前主要版本为1.0,本教程以JanusGraph 1.0为例进行详细讲解。
$ gremlin.sh -v
Gremlin 3.7.0
JanusGraph 1.0.0
# 查看服务状态
$ jps
12345 Cassandra
12346 Elasticsearch
12347 JanusGraphServer
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
Gremlin端口:8182
Cassandra端口:9042
Elasticsearch端口:9200
数据目录:/data/janusgraph
配置目录:/usr/local/janusgraph/conf
日志目录:/usr/local/janusgraph/logs
存储规划:
图名称:fgedudb
存储后端:Cassandra
索引后端:Elasticsearch
1.3 JanusGraph核心特性
1. 分布式架构:支持水平扩展
2. 多存储后端:支持Cassandra、HBase等
3. 多索引后端:支持Elasticsearch、Solr等
4. Gremlin查询:强大的图遍历语言
5. ACID事务:支持事务处理
6. TinkerPop兼容:完全兼容TinkerPop API
7. 可视化:支持多种可视化工具
8. 多语言客户端:支持Java、Python等
2. 硬件环境要求与检查
在安装JanusGraph之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:4核心
内存:8GB
磁盘:100GB
推荐配置(生产环境):
CPU:16核心以上
内存:64GB以上
磁盘:500GB以上SSD
大规模部署配置:
CPU:32核心以上
内存:128GB以上
磁盘:2TB以上SSD
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
# 检查Java版本
# java -version
openjdk version “11.0.21” 2023-10-17 LTS
OpenJDK Runtime Environment (build 11.0.21+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.21+9-LTS, mixed mode, sharing)
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 31Gi 1.0Gi 29Gi 256Mi 1.0Gi 30Gi
Swap: 7Gi 0B 7Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data
2.3 安装Java环境
# dnf install -y java-11-openjdk java-11-openjdk-devel
# 输出示例:
上次元数据过期检查:0:00:00 前,执行于 2026年04月04日 星期五 10时00分00秒。
依赖关系解决。
================================================================================
软件包 架构 版本 仓库 大小
================================================================================
安装:
java-11-openjdk x86_64 1:11.0.21.0.9-1.el8 appstream 300 k
java-11-openjdk-devel x86_64 1:11.0.21.0.9-1.el8 appstream 3.4 M
已安装:
java-11-openjdk-1:11.0.21.0.9-1.el8.x86_64
java-11-openjdk-devel-1:11.0.21.0.9-1.el8.x86_64
完毕!
# 配置JAVA_HOME环境变量
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# 使环境变量生效
# source /etc/profile.d/java.sh
# 验证Java环境
# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk
2.4 内核参数配置
# vi /etc/sysctl.d/99-janusgraph.conf
# 添加以下参数
# 文件描述符限制
fs.file-max = 655360
# 内存参数
vm.max_map_count = 262144
vm.swappiness = 1
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-janusgraph.conf
# 配置用户限制
# vi /etc/security/limits.conf
# 添加以下配置
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
3. JanusGraph安装步骤
本节详细介绍JanusGraph 1.0的安装过程。学习交流加群风哥QQ113257174
3.1 安装Cassandra存储后端
# mkdir -p /usr/local/cassandra
# mkdir -p /data/cassandra
# 下载Cassandra
# cd /usr/local/src
# wget https://archive.apache.org/dist/cassandra/4.1.3/apache-cassandra-4.1.3-bin.tar.gz
# 解压安装包
# tar -xzf apache-cassandra-4.1.3-bin.tar.gz
# mv apache-cassandra-4.1.3/* /usr/local/cassandra/
# 配置Cassandra
# vi /usr/local/cassandra/conf/cassandra.yaml
# 修改以下配置
cluster_name: ‘JanusGraph Cluster’
data_file_directories:
– /data/cassandra/data
commitlog_directory: /data/cassandra/commitlog
saved_caches_directory: /data/cassandra/saved_caches
listen_address: 192.168.1.51
rpc_address: 192.168.1.51
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.51”
# 创建数据目录
# mkdir -p /data/cassandra/{data,commitlog,saved_caches,hints}
# 启动Cassandra
# /usr/local/cassandra/bin/cassandra -R
# 检查状态
$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
— Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.51 100 KB 16 100.0% abc123-def456-789 rack1
3.2 安装Elasticsearch索引后端
# mkdir -p /usr/local/elasticsearch
# mkdir -p /data/elasticsearch
# 下载Elasticsearch
# cd /usr/local/src
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.0-linux-x86_64.tar.gz
# 解压安装包
# tar -xzf elasticsearch-8.11.0-linux-x86_64.tar.gz
# mv elasticsearch-8.11.0/* /usr/local/elasticsearch/
# 创建elasticsearch用户
# useradd -r -s /sbin/nologin elasticsearch
# chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
# chown -R elasticsearch:elasticsearch /data/elasticsearch
# 配置Elasticsearch
# vi /usr/local/elasticsearch/config/elasticsearch.yml
# 修改以下配置
cluster.name: janusgraph-cluster
node.name: node-1
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 192.168.1.51
http.port: 9200
discovery.type: single-node
xpack.security.enabled: false
# 启动Elasticsearch
# su – elasticsearch -c “/usr/local/elasticsearch/bin/elasticsearch -d”
# 验证安装
$ curl http://192.168.1.51:9200
{
“name” : “node-1”,
“cluster_name” : “janusgraph-cluster”,
“version” : {
“number” : “8.11.0”
}
}
3.3 安装JanusGraph
# mkdir -p /usr/local/janusgraph
# mkdir -p /data/janusgraph
# 下载JanusGraph
# cd /usr/local/src
# wget https://github.com/JanusGraph/janusgraph/releases/download/v1.0.0/janusgraph-1.0.0.zip
# 解压安装包
# unzip janusgraph-1.0.0.zip
# mv janusgraph-1.0.0/* /usr/local/janusgraph/
# 查看安装目录
# ls -la /usr/local/janusgraph/
总用量 0
drwxr-xr-x. 2 root root 6 4月 4 10:00 bin
drwxr-xr-x. 2 root root 6 4月 4 10:00 conf
drwxr-xr-x. 2 root root 6 4月 4 10:00 data
drwxr-xr-x. 2 root root 6 4月 4 10:00 lib
drwxr-xr-x. 2 root root 6 4月 4 10:00 logs
# 配置JanusGraph
# vi /usr/local/janusgraph/conf/janusgraph-cql-es.properties
# 添加以下配置
storage.backend=cql
storage.hostname=192.168.1.51
storage.port=9042
storage.cql.keyspace=fgedudb
index.search.backend=elasticsearch
index.search.hostname=192.168.1.51
index.search.port=9200
index.search.index-name=fgedudb
graph.graphname=fgedudb
3.4 启动JanusGraph Server
# cd /usr/local/janusgraph
# bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml &
# 输出示例:
[INFO] GremlinServer – Configuring Gremlin Server.
[INFO] GremlinServer – Initializing Gremlin Server.
[INFO] GremlinServer – Gremlin Server is ready to accept connections on port 8182.
# 检查端口
# netstat -tlnp | grep java
tcp6 0 0 :::8182 :::* LISTEN 12347/java
# 连接测试
$ bin/gremlin.sh
\,,,/
(o o)
—–oOOo-(3)-oOOo—–
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/127.0.0.1:8182
gremlin> :remote console
==>All scripts will now be sent to Gremlin Server – [localhost/127.0.0.1:8182] – type ‘:remote console’ to return to local mode.
gremlin> graph
==>standardjanusgraphfgedudb [cql:192.168.1.51]
4. JanusGraph参数配置
JanusGraph参数配置是数据库性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 存储后端配置
# vi /usr/local/janusgraph/conf/janusgraph-cql-es.properties
# 存储后端配置
storage.backend=cql
storage.hostname=192.168.1.51
storage.port=9042
storage.cql.keyspace=fgedudb
# 连接池配置
storage.connection_timeout=10000
storage.setup_wait=60000
# 批量加载配置
storage.batch-loading=false
storage.buffer-size=1024
# 事务配置
storage.transactions=true
# 缓存配置
cache.db-cache=true
cache.db-cache-size=0.5
cache.db-cache-clean-wait=20
cache.db-cache-time=180000
4.2 索引后端配置
# vi /usr/local/janusgraph/conf/janusgraph-cql-es.properties
# 索引后端配置
index.search.backend=elasticsearch
index.search.hostname=192.168.1.51
index.search.port=9200
index.search.index-name=fgedudb
# 索引客户端配置
index.search.client-only=true
index.search.local-mode=false
# 批量索引配置
index.search.bulk-loading=true
index.search.bulk-loading-batch-size=5000
# 索引刷新配置
index.search.refresh=true
4.3 Gremlin Server配置
# vi /usr/local/janusgraph/conf/gremlin-server/gremlin-server.yaml
# 服务配置
host: 0.0.0.0
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
# 图配置
graphs: {
graph: conf/janusgraph-cql-es.properties
}
# 线程池配置
threadPoolWorker: 1
gremlinPool: 8
# 输出配置
scriptEngines: {
gremlin-groovy: {
imports: [java.lang.Math],
staticImports: [java.lang.Math.PI],
scripts: [scripts/empty-sample.groovy]
}
}
# 重启服务
# pkill -f gremlin-server
# bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml &
5. 图数据库管理
JanusGraph使用Gremlin查询语言管理图数据,支持顶点、边和属性的创建和查询。from:www.itpux.com
5.1 创建图Schema
$ bin/gremlin.sh
gremlin> :remote connect tinkerpop.server conf/remote.yaml
gremlin> :remote console
# 定义属性
gremlin> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@12345678
gremlin> name = mgmt.makePropertyKey(‘name’).dataType(String.class).make()
==>name
gremlin> age = mgmt.makePropertyKey(‘age’).dataType(Integer.class).make()
==>age
gremlin> city = mgmt.makePropertyKey(‘city’).dataType(String.class).make()
==>city
gremlin> degree = mgmt.makePropertyKey(‘degree’).dataType(Integer.class).make()
==>degree
# 定义顶点标签
gremlin> person = mgmt.makeVertexLabel(‘person’).make()
==>person
# 定义边标签
gremlin> follow = mgmt.makeEdgeLabel(‘follow’).make()
==>follow
# 创建索引
gremlin> mgmt.buildIndex(‘nameIndex’, Vertex.class).addKey(name).buildCompositeIndex()
==>nameIndex
gremlin> mgmt.buildIndex(‘cityIndex’, Vertex.class).addKey(city).buildCompositeIndex()
==>cityIndex
# 提交Schema
gremlin> mgmt.commit()
==>null
5.2 创建顶点和边
gremlin> p1 = graph.addVertex(‘person’)
==>v[4104]
gremlin> p1.property(‘name’, ‘张三’)
==>张三
gremlin> p1.property(‘age’, 30)
==>30
gremlin> p1.property(‘city’, ‘北京’)
==>北京
# 创建多个顶点
gremlin> p2 = graph.addVertex(‘person’); p2.property(‘name’, ‘李四’); p2.property(‘age’, 28); p2.property(‘city’, ‘上海’)
==>上海
gremlin> p3 = graph.addVertex(‘person’); p3.property(‘name’, ‘王五’); p3.property(‘age’, 35); p3.property(‘city’, ‘广州’)
==>广州
# 创建边
gremlin> p1.addEdge(‘follow’, p2, ‘degree’, 5)
==>e[123-456-67x][4104-follow->8208]
gremlin> p1.addEdge(‘follow’, p3, ‘degree’, 3)
==>e[123-456-68x][4104-follow->12312]
# 提交事务
gremlin> graph.tx().commit()
==>null
5.3 查询数据
gremlin> g.V().limit(10)
==>v[4104]
==>v[8208]
==>v[12312]
# 查询顶点属性
gremlin> g.V().hasLabel(‘person’).valueMap()
==>[name:[张三], age:[30], city:[北京]]
==>[name:[李四], age:[28], city:[上海]]
==>[name:[王五], age:[35], city:[广州]]
# 条件查询
gremlin> g.V().has(‘person’, ‘age’, gt(30)).values(‘name’)
==>王五
# 关系查询
gremlin> g.V().has(‘name’, ‘张三’).out(‘follow’).values(‘name’)
==>李四
==>王五
# 多跳查询
gremlin> g.V().has(‘name’, ‘张三’).out(‘follow’).out(‘follow’).values(‘name’)
# 聚合查询
gremlin> g.V().hasLabel(‘person’).group().by(‘city’).by(‘name’)
==>[北京:[张三], 上海:[李四], 广州:[王五]]
# 统计查询
gremlin> g.V().hasLabel(‘person’).count()
==>3
# 边查询
gremlin> g.E().hasLabel(‘follow’).properties(‘degree’)
==>5
==>3
5.4 更新和删除数据
gremlin> g.V().has(‘name’, ‘张三’).property(‘age’, 31)
==>v[4104]
# 添加新属性
gremlin> g.V().has(‘name’, ‘张三’).property(’email’, ‘zhangsan@fgedu.net.cn’)
==>v[4104]
# 删除顶点
gremlin> g.V().has(‘name’, ‘测试用户’).drop()
# 删除边
gremlin> g.E().hasLabel(‘follow’).where(inV().has(‘name’, ‘测试’)).drop()
# 提交事务
gremlin> graph.tx().commit()
==>null
6. 网络连接配置
网络连接配置是客户端访问JanusGraph的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn
6.1 配置网络监听
# netstat -tlnp | grep java
tcp6 0 0 :::8182 :::* LISTEN 12347/java
tcp6 0 0 :::9042 :::* LISTEN 12345/java
tcp6 0 0 :::9200 :::* LISTEN 12346/java
# 配置防火墙
# firewall-cmd –permanent –add-port=8182/tcp
success
# firewall-cmd –permanent –add-port=9042/tcp
success
# firewall-cmd –permanent –add-port=9200/tcp
success
# firewall-cmd –reload
success
6.2 使用Python连接
$ pip install gremlinpython
# Python连接示例
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
from gremlin_python.process.anonymous_traversal import traversal
# 连接JanusGraph
connection = DriverRemoteConnection(‘ws://192.168.1.51:8182/gremlin’, ‘g’)
g = traversal().withRemote(connection)
# 查询数据
result = g.V().hasLabel(‘person’).values(‘name’).toList()
print(result)
# [‘张三’, ‘李四’, ‘王五’]
# 创建顶点
g.addV(‘person’).property(‘name’, ‘测试用户’).property(‘age’, 25).iterate()
# 创建边
p1 = g.V().has(‘name’, ‘张三’).next()
p2 = g.V().has(‘name’, ‘测试用户’).next()
g.addE(‘follow’).from_(p1).to(p2).property(‘degree’, 1).iterate()
# 关闭连接
connection.close()
6.3 使用Java连接
//
//
//
//
//
// Java连接示例
import org.apache.tinkerpop.gremlin.driver.Cluster;
import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;
public class JanusGraphExample {
public static void main(String[] args) {
Cluster cluster = Cluster.build(“192.168.1.51”)
.port(8182)
.create();
GraphTraversalSource g = traversal()
.withRemote(DriverRemoteConnection.using(cluster));
// 查询数据
List
.values(“name”).toList();
System.out.println(names);
cluster.close();
}
}
7. 备份恢复配置
备份恢复是数据库管理的重要环节,JanusGraph的备份主要依赖存储后端。学习交流加群风哥微信: itpux-com
7.1 Cassandra数据备份
# mkdir -p /backup/cassandra
# 使用nodetool快照
$ nodetool snapshot -t backup_$(date +%Y%m%d)
# 输出示例:
Requested creating snapshot(s) for [all keyspaces] with snapshot name [backup_20260404] and options {skipFlush=false}
Snapshot directory: backup_20260404
# 查看快照
$ nodetool listsnapshots
Snapshot Details:
Snapshot name Keyspace name Column family name True size Size on disk
backup_20260404 fgedudb edgestore 0 bytes 0 bytes
backup_20260404 fgedudb graphindex 0 bytes 0 bytes
# 备份快照目录
# tar -czf /backup/cassandra/snapshot_$(date +%Y%m%d).tar.gz /data/cassandra/data/*/snapshots/backup_*
# 清理快照
$ nodetool clearsnapshot -t backup_20260404
7.2 Elasticsearch数据备份
$ curl -X PUT “http://192.168.1.51:9200/_snapshot/backup_repo” -H ‘Content-Type: application/json’ -d’
{
“type”: “fs”,
“settings”: {
“location”: “/backup/elasticsearch”
}
}’
# 输出示例:
{“acknowledged”:true}
# 创建快照
$ curl -X PUT “http://192.168.1.51:9200/_snapshot/backup_repo/snapshot_$(date +%Y%m%d)”
# 输出示例:
{“acknowledged”:true}
# 查看快照状态
$ curl -X GET “http://192.168.1.51:9200/_snapshot/backup_repo/snapshot_*”
# 恢复快照
$ curl -X POST “http://192.168.1.51:9200/_snapshot/backup_repo/snapshot_20260404/_restore”
7.3 自动备份脚本
# vi /usr/local/bin/janusgraph_backup.sh
#!/bin/bash
BACKUP_DIR=/backup/janusgraph
DATE=$(date +%Y%m%d)
LOG_FILE=/usr/local/janusgraph/logs/backup.log
echo “=== Backup started at $(date) ===” >> $LOG_FILE
# Cassandra快照
nodetool snapshot -t backup_${DATE} >> $LOG_FILE 2>&1
tar -czf ${BACKUP_DIR}/cassandra_${DATE}.tar.gz /data/cassandra/data/*/snapshots/backup_${DATE} >> $LOG_FILE 2>&1
nodetool clearsnapshot -t backup_${DATE} >> $LOG_FILE 2>&1
# Elasticsearch快照
curl -X PUT “http://192.168.1.51:9200/_snapshot/backup_repo/snapshot_${DATE}” >> $LOG_FILE 2>&1
# 清理30天前的备份
find ${BACKUP_DIR} -name “*.tar.gz” -mtime +30 -delete >> $LOG_FILE 2>&1
echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE
# 设置脚本权限
# chmod +x /usr/local/bin/janusgraph_backup.sh
# 配置定时任务
# crontab -e
# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/janusgraph_backup.sh
8. 升级与迁移
JanusGraph升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com
8.1 版本升级
$ bin/gremlin.sh -v
# 执行完整备份
# 参见7.1和7.2节备份步骤
# 停止服务
# pkill -f gremlin-server
# 下载新版本
# cd /usr/local/src
# wget https://github.com/JanusGraph/janusgraph/releases/download/v1.1.0/janusgraph-1.1.0.zip
# 备份旧版本
# mv /usr/local/janusgraph /usr/local/janusgraph_old
# 安装新版本
# unzip janusgraph-1.1.0.zip
# mv janusgraph-1.1.0 /usr/local/janusgraph
# 恢复配置
# cp /usr/local/janusgraph_old/conf/*.properties /usr/local/janusgraph/conf/
# 启动服务
# cd /usr/local/janusgraph
# bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml &
# 验证版本
$ bin/gremlin.sh -v
8.2 迁移到新服务器
# 参见7.1和7.2节备份步骤
# 传输备份文件
# scp -r /backup/janusgraph new-server:/backup/
# 在新服务器安装依赖组件
# 安装Cassandra、Elasticsearch、JanusGraph
# 恢复Cassandra数据
# nodetool snapshot -t restore_$(date +%Y%m%d)
# tar -xzf /backup/janusgraph/cassandra_*.tar.gz -C /
# nodetool refresh fgedudb
# 恢复Elasticsearch数据
# curl -X POST “http://192.168.1.51:9200/_snapshot/backup_repo/snapshot_*/_restore”
# 启动JanusGraph
# bin/gremlin-server.sh conf/gremlin-server/gremlin-server.yaml &
# 验证迁移
gremlin> g.V().count()
9. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解JanusGraph的实际应用。from:www.itpux.com
9.1 集群部署
# Cassandra集群: 3节点
# Elasticsearch集群: 3节点
# JanusGraph Server: 2节点
# 节点规划:
# fgedudb01 (192.168.1.51) – Cassandra, Elasticsearch, JanusGraph
# fgedudb02 (192.168.1.52) – Cassandra, Elasticsearch, JanusGraph
# fgedudb03 (192.168.1.53) – Cassandra, Elasticsearch
# Cassandra集群配置
# vi /usr/local/cassandra/conf/cassandra.yaml
cluster_name: ‘JanusGraph Cluster’
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.51,192.168.1.52”
listen_address: 192.168.1.51 # 每个节点设置自己的IP
endpoint_snitch: GossipingPropertyFileSnitch
# Elasticsearch集群配置
# vi /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: janusgraph-cluster
node.name: node-1
discovery.seed_hosts: [“192.168.1.51”, “192.168.1.52”, “192.168.1.53”]
cluster.initial_master_nodes: [“node-1”, “node-2”, “node-3”]
# JanusGraph配置
# vi /usr/local/janusgraph/conf/janusgraph-cql-es.properties
storage.hostname=192.168.1.51,192.168.1.52,192.168.1.53
index.search.hostname=192.168.1.51,192.168.1.52,192.168.1.53
9.2 性能监控
$ nodetool status
$ nodetool info
$ nodetool tpstats
# 查看Elasticsearch状态
$ curl -X GET “http://192.168.1.51:9200/_cluster/health”
$ curl -X GET “http://192.168.1.51:9200/_cat/nodes”
# 查看JanusGraph统计
gremlin> graph.openManagement().getOpenInstances()
gremlin> g.V().count()
gremlin> g.E().count()
# 查看索引状态
gremlin> mgmt = graph.openManagement()
gremlin> mgmt.getGraphIndexes(Vertex.class)
gremlin> mgmt.commit()
9.3 性能优化
# vi /usr/local/janusgraph/conf/gremlin-server/gremlin-server.yaml
# 增加堆内存
# export JAVA_OPTIONS=”-Xms8g -Xmx8g”
# 缓存配置优化
# vi /usr/local/janusgraph/conf/janusgraph-cql-es.properties
cache.db-cache=true
cache.db-cache-size=0.5
cache.db-cache-clean-wait=20
cache.db-cache-time=180000
# 批量加载优化
storage.batch-loading=true
storage.buffer-size=4096
# 索引优化
index.search.bulk-loading=true
index.search.bulk-loading-batch-size=10000
# 查询优化
query.batch=true
query.force-index=true
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
