USAGE.md 5.6 KB

使用说明

快速开始

1. 环境准备

确保您的系统已安装:

  • Go 1.21+
  • MySQL 数据库
  • Clash客户端(用于高级代理测试)

2. 数据库设置

-- 创建数据库
CREATE DATABASE clash_speed_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户(可选)
CREATE USER 'clash_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON clash_speed_test.* TO 'clash_user'@'localhost';
FLUSH PRIVILEGES;

3. 配置应用

编辑 config.yaml 文件:

database:
  host: "localhost"
  port: 3306
  username: "root"  # 或您创建的用户
  password: "your_password"
  database: "clash_speed_test"

speed:
  test_urls:
    - "https://www.google.com"
    - "https://www.youtube.com"
    - "https://www.github.com"
  timeout: 10s
  concurrency: 5
  interval: 5m

4. 启动应用

Windows:

run.bat

Linux/Mac:

chmod +x run.sh
./run.sh

5. 测试功能

运行测试脚本验证功能:

go run test_speed.go

功能对比

Node.js版本的问题

  1. 代理支持不完整: 试图通过HTTP代理模式测试高级代理,不可靠
  2. 测速精度不够: 只测试基本连接性,没有真实速度测试
  3. 错误处理不健壮: 代理创建失败时没有合适的降级策略
  4. 性能问题: Node.js的异步处理在高并发时可能不稳定

Go版本的改进

  1. 更准确的测速:

    • 使用1MB测试文件进行真实下载/上传速度测试
    • 精确的延迟测量
    • 支持多种测试URL
  2. 更完善的代理支持:

    • HTTP/HTTPS代理:直接支持
    • SOCKS5代理:直接支持
    • 高级代理:通过本地代理客户端支持
  3. 更好的性能:

    • 可配置的并发控制
    • 更高效的资源使用
    • 更稳定的网络处理
  4. 更健壮的错误处理:

    • 连接超时处理
    • 代理类型不支持处理
    • 网络错误重试机制

高级配置

1. 调整测速参数

speed:
  timeout: 15s        # 增加超时时间
  concurrency: 3      # 减少并发数
  interval: 10m       # 增加测试间隔

2. 自定义测试URL

speed:
  test_urls:
    - "https://www.google.com"
    - "https://www.youtube.com"
    - "https://www.github.com"
    - "https://httpbin.org/get"    # 添加自定义URL
    - "https://api.ipify.org"      # IP检测服务

3. 环境变量配置

# 数据库配置
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=clash_user
export DB_PASS=your_password
export DB_NAME=clash_speed_test

# 测速配置
export SPEED_TEST_TIMEOUT=15s
export SPEED_TEST_INTERVAL=10m
export SPEED_TEST_CONCURRENCY=3

# 服务器配置
export PORT=3000

故障排除

1. 数据库连接失败

错误信息: 连接数据库失败: dial tcp: connect: connection refused

解决方案:

# 检查MySQL服务状态
sudo systemctl status mysql

# 启动MySQL服务
sudo systemctl start mysql

# 检查端口是否开放
netstat -tlnp | grep 3306

2. 代理测试失败

错误信息: 延迟测试失败: 所有测试URL都无法访问

解决方案:

  1. 检查代理服务器是否可访问
  2. 验证代理配置是否正确
  3. 确认网络连接正常
  4. 尝试不同的测试URL

3. 高级代理无法测试

错误信息: 无法通过本地代理测试节点

解决方案:

  1. 确保Clash客户端正在运行
  2. 检查本地代理端口是否开放:

    netstat -tlnp | grep 7890
    netstat -tlnp | grep 7891
    
  3. 验证代理配置是否正确

  4. 尝试手动测试代理连接

4. 编译错误

错误信息: go: module lookup disabled by GOPROXY=off

解决方案:

# 设置Go代理
export GOPROXY=https://goproxy.cn,direct

# 或者使用官方代理
export GOPROXY=https://proxy.golang.org,direct

性能优化建议

1. 网络环境优化

  • 网络较好: 并发数5-10,超时时间5-10秒
  • 网络一般: 并发数3-5,超时时间10-15秒
  • 网络较差: 并发数1-3,超时时间15-30秒

2. 系统资源优化

  • 内存: 建议至少2GB可用内存
  • CPU: 建议至少2核心CPU
  • 网络: 建议稳定的网络连接

3. 数据库优化

-- 优化MySQL配置
SET GLOBAL max_connections = 200;
SET GLOBAL innodb_buffer_pool_size = 1073741824; -- 1GB

监控和维护

1. 日志监控

程序会输出详细的日志信息:

  • 测试开始/结束
  • 节点测试结果
  • 错误信息
  • 性能统计

2. 数据库维护

定期清理旧的测试数据:

-- 删除30天前的测试结果
DELETE FROM test_results WHERE test_time < DATE_SUB(NOW(), INTERVAL 30 DAY);

-- 优化表
OPTIMIZE TABLE test_results;

3. 系统监控

监控关键指标:

  • CPU使用率
  • 内存使用率
  • 网络连接数
  • 数据库连接数

扩展功能

1. 添加新的代理类型

internal/core/speed_tester.go 中添加新的测试方法:

func (st *SpeedTester) testNewProxyType(node database.Node) (*SpeedTestResult, error) {
    // 实现新的代理类型测试逻辑
}

2. 添加新的测试指标

SpeedTestResult 结构体中添加新字段:

type SpeedTestResult struct {
    // 现有字段...
    NewMetric float64 `json:"new_metric"`
}

3. 自定义测试URL

在配置文件中添加自定义测试URL:

speed:
  test_urls:
    - "https://your-custom-test-url.com"

技术支持

如果遇到问题,请:

  1. 检查日志输出
  2. 验证配置文件
  3. 测试网络连接
  4. 查看故障排除部分
  5. 提交Issue到项目仓库