Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -833,3 +833,7 @@ erroring
namespaces
tracebacks
eval
NOAUTH
redirections
CrashLoopBackOff
PersistentVolumeClaim
4 changes: 4 additions & 0 deletions operations/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,7 @@ Comprehensive guides for migrating your data to FalkorDB from RedisGraph, Neo4j,
## 12. [Building Docker](/operations/building-docker)

Build custom FalkorDB Docker containers from source with platform-specific examples.

## 13. [Troubleshooting](/operations/troubleshooting)

Common issues and solutions covering connection errors, query timeouts, out-of-memory problems, Docker, replication, and Kubernetes troubleshooting.
290 changes: 290 additions & 0 deletions operations/troubleshooting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
---
title: "Troubleshooting"
parent: "Operations"
nav_order: 14
description: "Common FalkorDB issues and solutions covering connection errors, query timeouts, out-of-memory problems, replication, cluster, Docker, and Kubernetes troubleshooting."
---

# Troubleshooting

This page covers the most common issues encountered when running FalkorDB, along with their solutions. Issues are grouped by category for quick reference.

---

## Connection Issues

### Connection Refused

**Symptom:** Client throws `Connection refused` or `Could not connect to FalkorDB at localhost:6379`.

**Possible Causes:**
1. FalkorDB is not running
2. The port is not exposed or mapped incorrectly
3. A firewall is blocking the connection

**Solutions:**

```bash
# Check if FalkorDB is running
docker ps | grep falkordb

# Verify port mapping
docker port <container_id>

# Test connectivity
redis-cli -h localhost -p 6379 ping
```

If using Docker Compose, ensure the `ports` section maps the correct host port:

```yaml
ports:
- "6379:6379"
```

### Authentication Required / NOAUTH

**Symptom:** `NOAUTH Authentication required` or `ERR invalid password`.

**Solutions:**
- Ensure your client provides the correct password set via `--requirepass`
- If using ACL users, authenticate with both username and password
- Check that the ACL file is mounted correctly if users are not persisting

```python
# Python — provide password
db = FalkorDB(host='localhost', port=6379, password='yourpassword')

# With ACL user
db = FalkorDB(host='localhost', port=6379, username='myuser', password='mypassword')
```

### MOVED Redirect (Cluster Mode)

**Symptom:** `MOVED 12345 10.0.0.2:6379` error when executing queries.

**Cause:** Your client is connecting to a cluster node that doesn't own the hash slot for the requested graph.

**Solution:** Use a cluster-aware client that handles MOVED redirections automatically, or connect to the correct node. See [Setting Up a Cluster](/operations/cluster) for details.

---

## Query Issues

### Query Timeout Exceeded

**Symptom:** `Query timed out` error.

**Cause:** The query execution exceeded the configured timeout.

**Solutions:**

1. **Check the current timeout settings:**

```
GRAPH.CONFIG GET TIMEOUT_DEFAULT
GRAPH.CONFIG GET TIMEOUT_MAX
```

2. **Increase the timeout** (if the query legitimately needs more time):

```
GRAPH.CONFIG SET TIMEOUT_DEFAULT 10000
```

3. **Optimize the query** — use [GRAPH.EXPLAIN](/commands/graph.explain) to inspect the query plan and add indexes where needed:

```
GRAPH.EXPLAIN myGraph "MATCH (n:Person {name: 'Alice'}) RETURN n"
```

4. **Override timeout per-query:**

```
GRAPH.QUERY myGraph "MATCH (n) RETURN n LIMIT 100" TIMEOUT 30000
```

See [Configuration — Timeouts](/getting-started/configuration#timeout_default) for more details.

### Graph Not Found

**Symptom:** `ERR Invalid graph operation on empty key` or similar.

**Cause:** The graph key does not exist — it may not have been created yet, or the name is misspelled.

**Solution:**

```
# List all graphs
GRAPH.LIST
```

Verify the graph name matches exactly (graph names are case-sensitive).

### Slow Queries

**Symptom:** Queries take longer than expected.

**Diagnostic Steps:**

1. **Check the slow log:**

```
GRAPH.SLOWLOG myGraph
```

This shows queries that took ≥ 10 ms.

2. **Profile the query:**

```
GRAPH.PROFILE myGraph "MATCH (n:Person)-[:KNOWS]->(m) WHERE n.name = 'Alice' RETURN m"
```

Look for full graph scans — these indicate a missing index.

3. **Add an index** if the query filters on a property:

```
GRAPH.QUERY myGraph "CREATE INDEX FOR (n:Person) ON (n.name)"
```

See [Range Indexes](/cypher/indexing/range-index) and [GRAPH.PROFILE](/commands/graph.profile) for more details.

---

## Memory Issues

### Out of Memory

**Symptom:** `OOM command not allowed when used memory > maxmemory` or query fails with memory allocation error.

**Possible Causes:**
1. The graph exceeds available memory
2. A single query allocates too much memory

**Solutions:**

1. **Check memory usage:**

```
GRAPH.MEMORY myGraph
INFO memory
```

2. **Limit per-query memory:**

```
GRAPH.CONFIG SET QUERY_MEM_CAPACITY 1073741824 # 1 GB
```

3. **Increase the server memory limit** (if resources are available):

```
CONFIG SET maxmemory 8gb
```

4. **Optimize your data model** — remove unnecessary properties, use shorter string values, or split into multiple graphs.

See [GRAPH.MEMORY](/commands/graph.memory) and [Configuration — QUERY_MEM_CAPACITY](/getting-started/configuration#query_mem_capacity) for details.
Comment on lines +82 to +189
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix markdownlint MD040: add a language to fenced code blocks.

Several command fences start with ``` (no language), triggering markdownlint-cli2 (MD040) at lines 84, 91, 97, 103, 117, 132, 140, 148, 170, 177, and 183. Add a language tag to each (e.g., `bash` or `text`) to keep CI/lint clean.

🛠️ Proposed fix (representative change)
  1. **Check the current timeout settings:**
-   ```
+   ```bash
    GRAPH.CONFIG GET TIMEOUT_DEFAULT
    GRAPH.CONFIG GET TIMEOUT_MAX
    ```
...
  2. **Increase the timeout** (if the query legitimately needs more time):
-   ```
+   ```bash
    GRAPH.CONFIG SET TIMEOUT_DEFAULT 10000
    ```
...
  # List all graphs
- GRAPH.LIST
+ ```bash
+ GRAPH.LIST
+ ```

Apply the same ```bash (or ```text) change to every fenced block flagged by MD040 in this file.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 84-84: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 91-91: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 97-97: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 103-103: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 117-117: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 132-132: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 140-140: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 148-148: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 170-170: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 177-177: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 183-183: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@operations/troubleshooting.md` around lines 82 - 189, The markdown file has
multiple fenced code blocks without a language tag (e.g., the blocks containing
commands like "GRAPH.CONFIG GET TIMEOUT_DEFAULT", "GRAPH.CONFIG SET
TIMEOUT_DEFAULT 10000", "GRAPH.EXPLAIN myGraph ...", "GRAPH.QUERY myGraph ...",
"GRAPH.LIST", "GRAPH.SLOWLOG myGraph", "GRAPH.PROFILE myGraph ...", "GRAPH.QUERY
myGraph \"CREATE INDEX ...\"", "GRAPH.MEMORY myGraph", and "CONFIG SET maxmemory
8gb"); fix MD040 by adding a language identifier (preferably bash or text) to
each opening fence (change ``` to ```bash) for all fenced blocks flagged in this
diff so the linter stops reporting MD040 and the code blocks are properly
highlighted.


---

## Docker Issues

### Container Exits Immediately

**Symptom:** Container starts and stops within seconds.

**Diagnostic Steps:**

```bash
# Check container logs
docker logs <container_id>

# Run interactively to see errors
docker run -it --rm falkordb/falkordb:latest
```

**Common causes:**
- Invalid `REDIS_ARGS` or `FALKORDB_ARGS` environment variables
- Missing ACL file when `aclfile` directive is set
- Port conflicts with another service

### Data Lost After Container Restart

**Cause:** Data is stored inside the container filesystem, which is ephemeral.

**Solution:** Mount a persistent volume:

```bash
docker run -p 6379:6379 -p 3000:3000 \
-v falkordb-data:/data \
--rm falkordb/falkordb:latest
```

See [Data Durability](/operations/durability) and [Docker Deployment](/operations/docker) for full persistence configuration.

### Browser Not Accessible

**Symptom:** Cannot reach the FalkorDB Browser at `http://localhost:3000`.

**Check:**
1. Ensure port 3000 is mapped: `-p 3000:3000`
2. If using `falkordb/falkordb-server` image — this image does **not** include the Browser. Use `falkordb/falkordb` instead.
3. Check firewall rules if accessing remotely.

---

## Replication Issues

### Replica Not Syncing

**Symptom:** Replica shows stale data or `master_link_status:down`.

**Diagnostic Steps:**

```bash
# On the replica
redis-cli INFO replication
```

**Check:**
- Network connectivity between primary and replica
- Authentication — replica must use the primary's password via `--masterauth`
- The primary is not at max memory / max clients

See [Configuring Replication](/operations/replication) for setup details.

---

## Kubernetes Issues

### Pod CrashLoopBackOff

**Symptom:** FalkorDB pod repeatedly crashes.

**Diagnostic Steps:**

```bash
kubectl logs <pod-name> --previous
kubectl describe pod <pod-name>
```

**Common causes:**
- Insufficient memory requests/limits — FalkorDB needs enough memory for the graph data
- PersistentVolumeClaim not bound
- Incorrect module path in `--loadmodule` flag

See [Deploy FalkorDB to Kubernetes](/operations/k8s-support) and [KubeBlocks](/operations/kubeblocks) for deployment guides.

---

## Getting More Help

If your issue is not covered here:

1. **Check the logs** — FalkorDB and Redis logs often contain detailed error messages
2. **Search existing issues** on [GitHub](https://github.com/FalkorDB/FalkorDB/issues)
3. **Join the community** on [Discord](https://discord.gg/ErBEqN9E)
4. **Contact support** — [FalkorDB Support](https://www.falkordb.com/contact-us/)