Troubleshooting Guide
This guide helps diagnose and resolve common issues in PulseCRM.
Common Issues
Authentication Issues
JWT Token Invalid
Symptoms:
- 401 Unauthorized responses
- Unexpected logouts
- Token validation errors
Solutions:
- Check token expiration
- Verify token format
- Confirm secret key configuration
- Check for clock skew
Session Management
Symptoms:
- Multiple re-authentications
- Lost sessions
- Concurrent session conflicts
Solutions:
- Verify session configuration
- Check session storage
- Review timeout settings
- Monitor session cleanup
Database Issues
Connection Problems
Symptoms:
- Connection timeout errors
- Pool exhaustion
- Intermittent failures
Solutions:
- Check connection string
- Verify database credentials
- Monitor connection pool
- Review network configuration
Query Performance
Symptoms:
- Slow response times
- Query timeouts
- High resource usage
Solutions:
- Review query plans
- Check indexes
- Optimize queries
- Monitor query cache
API Issues
Rate Limiting
Symptoms:
- 429 Too Many Requests
- Throttled requests
- Inconsistent responses
Solutions:
- Check rate limit configuration
- Implement request queuing
- Add retry logic
- Monitor usage patterns
Response Errors
Symptoms:
- Unexpected 500 errors
- Inconsistent data
- Timeout issues
Solutions:
- Check error logs
- Verify request format
- Monitor API health
- Review error handling
Diagnostic Tools
System Health Check
# Check system status
curl http://localhost:3000/api/health
# Expected response
{
"status": "healthy",
"services": {
"database": "connected",
"cache": "available",
"storage": "accessible"
}
}
Database Diagnostics
-- Check connection count
SELECT count(*), state
FROM pg_stat_activity
GROUP BY state;
-- Identify slow queries
SELECT pid, query, duration
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC;
API Diagnostics
# Test API endpoint with curl
curl -v -H "Authorization: Bearer ${TOKEN}" \
http://localhost:3000/api/test
# Monitor rate limits
curl -v -H "Authorization: Bearer ${TOKEN}" \
http://localhost:3000/api/rate-limit-status
Error Messages
Database Errors
Connection Failed
Error: Connection to database failed
Cause: Unable to establish database connection
Solution:
1. Check database credentials
2. Verify database is running
3. Check network connectivity
Query Failed
Error: Query execution failed
Cause: Invalid query or database constraint violation
Solution:
1. Check query syntax
2. Verify data constraints
3. Review error details
API Errors
Authentication Failed
Error: Authentication failed
Status: 401
Cause: Invalid or expired token
Solution:
1. Check token validity
2. Verify credentials
3. Review authentication flow
Validation Failed
Error: Validation failed
Status: 400
Cause: Invalid request data
Solution:
1. Check request format
2. Verify required fields
3. Review validation rules
Performance Issues
Slow Queries
Symptoms
- Long response times
- High CPU usage
- Memory pressure
Diagnosis
- Check query plans
- Monitor index usage
- Review data volume
- Analyze query patterns
Solutions
- Optimize indexes
- Refactor queries
- Implement caching
- Consider denormalization
Memory Issues
Symptoms
- High memory usage
- Garbage collection spikes
- Out of memory errors
Diagnosis
- Monitor memory usage
- Check memory leaks
- Review resource allocation
- Analyze usage patterns
Solutions
- Optimize memory usage
- Implement pooling
- Add memory limits
- Review resource cleanup
Monitoring
Key Metrics
System Health
- CPU usage
- Memory usage
- Disk space
- Network traffic
Application Metrics
- Response times
- Error rates
- Request volume
- Active users
Database Metrics
- Connection count
- Query performance
- Lock contention
- Cache hit ratio
Logging
Log Levels
// Log level configuration
const logLevels = {
error: 0,
warn: 1,
info: 2,
debug: 3
};
// Usage example
logger.error("Critical error", { error });
logger.warn("Warning condition", { details });
logger.info("Operation completed", { result });
logger.debug("Debug information", { data });
Log Analysis
- Review error patterns
- Monitor warning trends
- Track information flow
- Debug specific issues
Recovery Procedures
Database Recovery
- Check backup status
- Stop affected services
- Restore from backup
- Verify data integrity
- Resume services
Service Recovery
- Identify failure point
- Stop affected service
- Clear corrupt state
- Restart service
- Verify operation
Data Recovery
- Identify data issue
- Stop write operations
- Apply corrections
- Verify integrity
- Resume operations