Troubleshooting
Common issues and solutions for Zektor.io managed database instances — connection errors, performance problems, and recovery steps.
PostgreSQL Issues
Connection refused
Symptoms: could not connect to server: Connection refused
Causes and solutions:
- Instance not active — Check your instance status in the dashboard. If it shows "Provisioning", wait for it to complete.
- Wrong host or port — Verify the connection details from the Settings tab. PostgreSQL uses port
5432. - Missing TLS — All connections require TLS. Add
sslmode=requireto your connection string.
# Test connectivity
psql 'postgresql://<username>:<password>@<host>:5432/<database>?sslmode=require'Authentication failed
Symptoms: FATAL: password authentication failed for user
Solutions:
- Double-check your username and password from the Settings tab
- Ensure you're connecting to the correct database name
- If connecting to a branch, use the branch's own credentials (not the main branch's)
Too many connections
Symptoms: FATAL: too many clients already
Solutions:
-
Check your current connections:
SELECT count(*) FROM pg_stat_activity; -
Identify idle connections:
SELECT pid, usename, application_name, state, query_start FROM pg_stat_activity WHERE state = 'idle' ORDER BY query_start; -
Terminate idle connections if needed:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle' AND query_start < NOW() - INTERVAL '1 hour'; -
Consider using a connection pooler like PgBouncer in your application
-
Upgrade your tier for higher
max_connections
Slow queries
Symptoms: Queries taking longer than expected
Diagnosis steps:
-
Enable query tracking:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -
Find the slowest queries:
SELECT query, calls, round(mean_exec_time::numeric, 2) AS avg_ms, round(total_exec_time::numeric, 2) AS total_ms FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10; -
Analyze a specific query:
EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 42; -
Check for missing indexes:
SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE seq_scan > 100 AND idx_scan < seq_scan ORDER BY seq_scan DESC;
Solutions:
- Add indexes on columns used in
WHERE,JOIN, andORDER BYclauses - Use
LIMITto avoid fetching unnecessary rows - Avoid
SELECT *— query only the columns you need - Run
VACUUM ANALYZEto update table statistics - Upgrade your tier if resource limits are the bottleneck
Disk space running low
Symptoms: Dashboard shows high disk usage, or queries fail with could not write to file
Solutions:
-
Check what's using space:
SELECT tablename, pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) AS total FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC; -
Clean up dead tuples:
VACUUM FULL; -
Remove unnecessary data or old rows
-
Storage auto-scales if you have auto-scaling enabled. If not, upgrade your tier for more storage.
Extensions not working after restore
Symptoms: Errors referencing missing functions or types after restoring from a backup
Solution: PostgreSQL extensions may need to be reinstalled on restored branches:
-- Reinstall your extensions
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Add your other extensionsValkey Issues
Connection refused
Symptoms: Could not connect to Redis
Solutions:
- Verify host and port from the Settings tab (Valkey uses port
6379) - Ensure you're using TLS — use
rediss://(double s) in connection URIs or--tlsflag - Check that your instance is in Active status
# Test connectivity
valkey-cli -h <host> -p 6379 -a <password> --tls PINGNOAUTH / Authentication error
Symptoms: NOAUTH Authentication required or ERR invalid password
Solutions:
- Verify your password from the Settings tab
- Ensure the password is passed correctly:
# CLI valkey-cli -h <host> -p 6379 -a <password> --tls # Connection URI rediss://<password>@<host>:6379
OOM (Out of Memory)
Symptoms: OOM command not allowed when used memory > maxmemory
Solutions:
-
Check memory usage:
valkey-cli -h <host> -p 6379 -a <password> --tls INFO memory -
Set TTLs on keys that don't need to persist indefinitely:
EXPIRE mykey 3600 -
Remove unnecessary keys:
DEL unused_key_1 unused_key_2 -
Review large keys:
valkey-cli -h <host> -p 6379 -a <password> --tls --bigkeys -
Upgrade your tier for more RAM
High latency
Symptoms: Commands taking longer than expected (> 1ms)
Diagnosis:
# Check slow log
valkey-cli -h <host> -p 6379 -a <password> --tls SLOWLOG GET 10Solutions:
- Avoid
KEYS *in production — useSCANinstead - Use pipelining to batch multiple commands
- Check if your client library is reconnecting frequently (connection churn)
- Ensure your application is in the same or nearby region as your instance
General Issues
Instance stuck in "Provisioning"
If your instance has been in "Provisioning" status for more than 5 minutes:
- Wait a few more minutes — peak times may cause slight delays
- If the issue persists, contact support with your instance ID
Backup failed
If a backup shows "Failed" status:
- Check if your instance was under heavy load during the backup
- Verify your instance has enough storage for the backup process
- Manually trigger a new backup from the Backups tab
- If backups consistently fail, contact support
Cannot delete instance
- Ensure you're deleting the correct instance (not the
mainbranch) - The
mainbranch cannot be deleted — delete the instance itself - If the delete button is disabled, the instance may be processing another operation. Wait and try again.
Getting Help
If your issue isn't covered here:
- Email us at [email protected]
- Include your instance ID and any error messages
- We typically respond within a few hours
Next Steps
- Monitoring — Track metrics to prevent issues
- Scaling — Upgrade resources if needed
- FAQ — Common questions