- Upgrade casbin from v2 to v3 across go.mod and pkg/auth/casbin.go - Add slide captcha verification to registration flow (CheckVerified, ConsumeVerified) - Add DB wrapper with connection pool statistics and health checks - Add Redis connection pool optimizations with stats and health monitoring - Add new config options: ConnMaxLifetime, HealthCheckInterval, EnableRetryOnError - Optimize slow query threshold from 200ms to 100ms - Add ping with retry mechanism for database and Redis connections
155 lines
6.0 KiB
Plaintext
155 lines
6.0 KiB
Plaintext
# CarrotSkin 环境配置文件示例
|
||
# 复制此文件为 .env 并修改相应的配置值
|
||
|
||
# =============================================================================
|
||
# 站点配置
|
||
# =============================================================================
|
||
SITE_NAME=CarrotSkin
|
||
SITE_DESCRIPTION=一个优秀的Minecraft皮肤站
|
||
REGISTRATION_ENABLED=true
|
||
DEFAULT_AVATAR=
|
||
|
||
# =============================================================================
|
||
# 用户限制配置
|
||
# =============================================================================
|
||
MAX_TEXTURES_PER_USER=50
|
||
MAX_PROFILES_PER_USER=5
|
||
|
||
# =============================================================================
|
||
# 积分配置
|
||
# =============================================================================
|
||
CHECKIN_REWARD=10
|
||
TEXTURE_DOWNLOAD_REWARD=1
|
||
|
||
# =============================================================================
|
||
# 服务器配置
|
||
# =============================================================================
|
||
SERVER_PORT=:8080
|
||
SERVER_MODE=debug
|
||
SERVER_READ_TIMEOUT=30s
|
||
SERVER_WRITE_TIMEOUT=30s
|
||
SERVER_SWAGGER_ENABLED=true
|
||
|
||
# =============================================================================
|
||
# 数据库配置
|
||
# =============================================================================
|
||
DATABASE_DRIVER=postgres
|
||
DATABASE_HOST=localhost
|
||
DATABASE_PORT=5432
|
||
DATABASE_USERNAME=postgres
|
||
DATABASE_PASSWORD=your_password_here
|
||
DATABASE_NAME=carrotskin
|
||
DATABASE_SSL_MODE=disable
|
||
DATABASE_TIMEZONE=Asia/Shanghai
|
||
|
||
# 连接池配置(优化后的默认值)
|
||
# 最大空闲连接数:在连接池中保持的最大空闲连接数
|
||
# 建议值:CPU核心数 * 2 ~ CPU核心数 * 4
|
||
DATABASE_MAX_IDLE_CONNS=10
|
||
# 最大打开连接数:允许的最大并发连接数
|
||
# 建议值:根据并发需求调整,高并发场景可设置更高(如200-500)
|
||
DATABASE_MAX_OPEN_CONNS=100
|
||
# 连接最大生命周期:连接被重用前的最大存活时间
|
||
# 建议值:30分钟到1小时,避免长时间占用连接
|
||
DATABASE_CONN_MAX_LIFETIME=1h
|
||
# 连接最大空闲时间:连接被关闭前的最大空闲时间
|
||
# 建议值:5-15分钟,避免长时间空闲占用资源
|
||
DATABASE_CONN_MAX_IDLE_TIME=10m
|
||
# 连接获取超时:等待获取连接的超时时间(新增)
|
||
# 建议值:1-5秒,避免长时间阻塞
|
||
DATABASE_CONN_TIMEOUT=5s
|
||
# 查询超时:单次查询的最大执行时间(新增)
|
||
# 建议值:5-30秒,根据业务查询复杂度调整
|
||
DATABASE_QUERY_TIMEOUT=30s
|
||
# 慢查询阈值:记录慢查询的阈值(优化:从200ms调整为100ms)
|
||
# 超过此时间的查询将被记录为警告
|
||
DATABASE_SLOW_THRESHOLD=100ms
|
||
# 健康检查间隔:定期检查数据库连接健康的间隔(新增)
|
||
# 建议值:30秒到5分钟
|
||
DATABASE_HEALTH_CHECK_INTERVAL=30s
|
||
|
||
# =============================================================================
|
||
# Redis配置(优化后的默认值)
|
||
# =============================================================================
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=
|
||
REDIS_DATABASE=0
|
||
|
||
# 连接池配置(优化后的默认值)
|
||
# 连接池大小:允许的最大并发连接数
|
||
# 建议值:CPU核心数 * 4 ~ CPU核心数 * 8,根据并发需求调整
|
||
REDIS_POOL_SIZE=16
|
||
# 最小空闲连接数:在连接池中保持的最小空闲连接数
|
||
# 建议值:CPU核心数 * 2 ~ CPU核心数 * 4
|
||
REDIS_MIN_IDLE_CONNS=8
|
||
# 最大重试次数:操作失败时的最大重试次数
|
||
REDIS_MAX_RETRIES=3
|
||
# 连接超时:建立连接的超时时间
|
||
# 建议值:3-10秒
|
||
REDIS_DIAL_TIMEOUT=5s
|
||
# 读取超时:读取数据的超时时间
|
||
# 建议值:3-5秒
|
||
REDIS_READ_TIMEOUT=3s
|
||
# 写入超时:写入数据的超时时间
|
||
# 建议值:3-5秒
|
||
REDIS_WRITE_TIMEOUT=3s
|
||
# 连接池超时:等待获取连接的超时时间
|
||
# 建议值:3-5秒
|
||
REDIS_POOL_TIMEOUT=4s
|
||
# 连接最大空闲时间:连接被关闭前的最大空闲时间
|
||
# 建议值:5-15分钟,避免长时间空闲占用资源
|
||
REDIS_CONN_MAX_IDLE_TIME=10m
|
||
# 连接最大生命周期:连接被重用前的最大存活时间
|
||
# 建议值:15-30分钟,避免长时间占用导致连接问题
|
||
REDIS_CONN_MAX_LIFETIME=30m
|
||
# 健康检查间隔:定期检查Redis连接健康的间隔
|
||
# 建议值:30秒到5分钟
|
||
REDIS_HEALTH_CHECK_INTERVAL=30s
|
||
# 错误时启用重试:操作失败时是否启用自动重试
|
||
# 建议值:true(生产环境),开发环境可设为false
|
||
REDIS_ENABLE_RETRY_ON_ERROR=true
|
||
|
||
# =============================================================================
|
||
# RustFS对象存储配置 (S3兼容)
|
||
# =============================================================================
|
||
RUSTFS_ENDPOINT=127.0.0.1:9000
|
||
RUSTFS_PUBLIC_URL=http://127.0.0.1:9000
|
||
RUSTFS_ACCESS_KEY=your_access_key
|
||
RUSTFS_SECRET_KEY=your_secret_key
|
||
RUSTFS_USE_SSL=false
|
||
RUSTFS_BUCKET_TEXTURES=carrot-skin-textures
|
||
RUSTFS_BUCKET_AVATARS=carrot-skin-avatars
|
||
|
||
# =============================================================================
|
||
# JWT配置
|
||
# =============================================================================
|
||
JWT_SECRET=your-jwt-secret-key-change-this-in-production
|
||
JWT_EXPIRE_HOURS=168
|
||
|
||
# =============================================================================
|
||
# 日志配置
|
||
# =============================================================================
|
||
LOG_LEVEL=info
|
||
LOG_FORMAT=json
|
||
LOG_OUTPUT=logs/app.log
|
||
|
||
# =============================================================================
|
||
# 安全配置
|
||
# =============================================================================
|
||
# CORS 允许的来源,多个用逗号分隔
|
||
SECURITY_ALLOWED_ORIGINS=*
|
||
# 允许的头像/材质URL域名,多个用逗号分隔
|
||
SECURITY_ALLOWED_DOMAINS=localhost,127.0.0.1
|
||
|
||
# =============================================================================
|
||
# 邮件配置
|
||
# 腾讯企业邮箱SSL配置示例:smtp.exmail.qq.com, 端口465
|
||
# =============================================================================
|
||
EMAIL_ENABLED=false
|
||
EMAIL_SMTP_HOST=smtp.example.com
|
||
EMAIL_SMTP_PORT=587
|
||
EMAIL_USERNAME=noreply@example.com
|
||
EMAIL_PASSWORD=your-email-password
|
||
EMAIL_FROM_NAME=CarrotSkin
|