CentOS环境下GitLab性能优化策略
dd if=/dev/zero of=/data/swap bs=512 count=16777216 → mkswap /data/swap → swapon /data/swap,并添加至/etc/fstab实现开机自启)。调整内核参数以提升网络和内存性能,编辑/etc/sysctl.conf文件,添加/修改以下关键参数:
net.core.somaxconn = 65535(增加TCP连接队列长度,避免连接拒绝)、net.ipv4.tcp_max_syn_backlog = 65535(提升SYN连接队列容量)、net.ipv4.tcp_fin_timeout = 30(缩短TIME_WAIT状态连接时长,释放资源)、net.ipv4.tcp_tw_reuse = 1(复用TIME_WAIT连接,减少资源占用)、net.core.rmem_max = 16777216/net.core.wmem_max = 16777216(增大网络缓冲区,提升吞吐量)。vm.swappiness = 10(降低系统使用Swap的倾向,优先使用物理内存)、vm.dirty_ratio = 15/vm.dirty_background_ratio = 5(调整脏页写入阈值,平衡内存与磁盘I/O)。sysctl -p使参数生效。修改/etc/gitlab/gitlab.rb文件(GitLab主配置文件),优化核心服务参数:
unicorn['worker_processes'] = CPU核心数(如4核服务器设为4,根据CPU核心数调整,最小值为2)、unicorn['timeout'] = 300(设置请求超时时间,避免长时间挂起)、unicorn['keepalive'] = true(启用Keep-Alive,减少TCP连接开销)。sidekiq['concurrency'] = CPU核心数 * 2(如4核服务器设为8,根据CPU核心数调整,并发数不宜超过CPU核心数的2倍)、sidekiq['queues'] = ["default", "gitlab"](指定任务队列,避免单一队列阻塞)。postgresql['shared_buffers'] = "64MB"(共享缓冲区,建议设置为内存的1/4,如8GB内存设为2GB)、postgresql['max_worker_processes'] = CPU核心数(并行查询进程数,提升复杂查询性能)。gitlab_rails['cache_store'] = :memory_store, { size: 64.megabytes }(启用内存缓存,减少数据库查询次数)、nginx['enable'] = true(启用Nginx反向代理,提升静态资源访问速度)。sudo gitlab-ctl reconfigure使配置生效,sudo gitlab-ctl restart重启GitLab服务。gitlab_rails['cache_store']配置内存缓存,缓存常用数据(如项目元数据、用户信息),减少数据库访问次数。npm cache verify、pip cache dir),避免每次构建重复下载,显著缩短构建时间。gitlab-rake gitlab:clean命令,清理临时文件、过期日志、无用仓库备份,释放存储空间。work_mem参数(如postgresql['work_mem'] = "4MB"),提升排序、哈希操作性能;启用数据库压缩(如postgresql['wal_compression'] = true),减少日志文件大小。gitlab_rails['gitlab_shell_ssh_port'] = 22配合Compression_level参数),减少仓库存储空间占用。gitlab_rails['gitlab_default_branch_deletion_delay'] = 30.days),避免仓库历史膨胀。/status接口),将请求分发至健康实例,避免单点故障。log_level = "info",生产环境建议设为warn或error),减少不必要的日志输出;定期清理过期日志(如gitlab-rake gitlab:logs:cleanup),避免日志文件占用过多存储空间。gitlab-rake gitlab:backup:create),设置备份保留周期(如保留7天),并定期测试备份恢复流程(如模拟服务器故障,恢复备份数据),确保数据安全。