Repository Maintenance
Repository Repacking
Repacking consolidates Git objects to improve performance and reduce disk usage.Full Repack
TheRepackFull RPC performs a full repository repack:
Git Version Requirements
Gitaly requires Git 2.33.0 or newer. Ensure your Git installation is up to date:Performance Optimization
Monitoring Resource Usage
Regularly monitor Gitaly performance using:- Grafana dashboards for overall health
- Prometheus metrics for detailed metrics
- Distributed tracing for request analysis
Backpressure Configuration
Properly configured backpressure settings prevent resource exhaustion:- Set concurrency limits for expensive operations
- Configure rate limits for resource-intensive RPCs
- Monitor queue metrics to identify bottlenecks
High Availability Maintenance
Praefect and Replication
For high availability deployments using Praefect:- Monitor replication lag between primary and secondary Gitaly servers
- Ensure PostgreSQL (9.6+) is properly maintained
- Verify dirty repositories are being replicated
Database Maintenance
Praefect uses PostgreSQL to store internal state:- Regularly vacuum the database
- Monitor connection pool usage
- Keep PostgreSQL updated (minimum version 9.6)
Backup Best Practices
Regular Backups
Use gitaly-backup for repository backups:Backup Verification
Periodically test backup restoration:- Restore to a test environment
- Verify repository integrity
- Confirm all references are present
- Test that commits and branches are accessible
System Resource Management
Disk Space
Monitor disk usage:- Repository storage paths
- Temporary directories used during operations
- Backup storage locations
Memory Management
Gitaly operations can be memory-intensive:- Monitor memory usage via Prometheus metrics
- Configure concurrency limits to prevent memory exhaustion
- Consider server memory when setting
max_per_repolimits
CPU Utilization
Git operations are CPU-intensive:- Monitor CPU usage during peak hours
- Use
parallelandparallel-storageflags to balance load - Scale horizontally by adding Gitaly servers as needed
Logging and Troubleshooting
Log Analysis
For detailed latency analysis, use ELK:- Go to ELK
- Search for Gitaly RPC logs
- Analyze latency patterns and errors
Distributed Tracing
Enable distributed tracing for detailed request tracking:Upgrade Procedures
Git Version Upgrades
When upgrading Git:- Test the new version in a staging environment
- Verify compatibility with Gitaly operations
- Update across all Gitaly servers simultaneously
- Monitor for any performance regressions
Gitaly Upgrades
Gitaly is included in GitLab installations:- Follow GitLab upgrade procedures
- Ensure Git version compatibility
- Verify Ruby version requirements (Ruby 2.7+)
Go and Ruby Requirements
For source installations:- Go 1.16 or Go 1.17
- Ruby 2.7
- Run
maketo compile after upgrades
Storage Management
Storage Paths
Ensure storage paths are properly configured in GitLab:- Monitor available disk space
- Verify permissions on storage directories
- Consider using multiple storage locations for load distribution
Repository Migration
When migrating repositories between Gitaly servers:- Use GitLab’s built-in repository migration features
- Verify data integrity after migration
- Update configuration to point to new storage locations
- Monitor replication if using Praefect
Scheduled Maintenance Windows
Planning Maintenance
Schedule maintenance during low-traffic periods:- Full repository repacks
- Database vacuuming (for Praefect)
- Backup verification tests
- System upgrades
Maintenance Checklist
Pre-maintenance
- Notify users of scheduled maintenance
- Create full backup
- Document current configuration
- Verify monitoring is operational
During maintenance
- Perform planned operations
- Monitor resource usage
- Document any issues encountered
- Test critical functionality