# 使用说明 ## 快速开始 ### 1. 环境准备 确保您的系统已安装: - Go 1.21+ - MySQL 数据库 - Clash客户端(用于高级代理测试) ### 2. 数据库设置 ```sql -- 创建数据库 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` 文件: ```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:** ```cmd run.bat ``` **Linux/Mac:** ```bash chmod +x run.sh ./run.sh ``` ### 5. 测试功能 运行测试脚本验证功能: ```bash 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. 调整测速参数 ```yaml speed: timeout: 15s # 增加超时时间 concurrency: 3 # 减少并发数 interval: 10m # 增加测试间隔 ``` ### 2. 自定义测试URL ```yaml 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. 环境变量配置 ```bash # 数据库配置 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` **解决方案**: ```bash # 检查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. 检查本地代理端口是否开放: ```bash netstat -tlnp | grep 7890 netstat -tlnp | grep 7891 ``` 3. 验证代理配置是否正确 4. 尝试手动测试代理连接 ### 4. 编译错误 **错误信息**: `go: module lookup disabled by GOPROXY=off` **解决方案**: ```bash # 设置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. 数据库优化 ```sql -- 优化MySQL配置 SET GLOBAL max_connections = 200; SET GLOBAL innodb_buffer_pool_size = 1073741824; -- 1GB ``` ## 监控和维护 ### 1. 日志监控 程序会输出详细的日志信息: - 测试开始/结束 - 节点测试结果 - 错误信息 - 性能统计 ### 2. 数据库维护 定期清理旧的测试数据: ```sql -- 删除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` 中添加新的测试方法: ```go func (st *SpeedTester) testNewProxyType(node database.Node) (*SpeedTestResult, error) { // 实现新的代理类型测试逻辑 } ``` ### 2. 添加新的测试指标 在 `SpeedTestResult` 结构体中添加新字段: ```go type SpeedTestResult struct { // 现有字段... NewMetric float64 `json:"new_metric"` } ``` ### 3. 自定义测试URL 在配置文件中添加自定义测试URL: ```yaml speed: test_urls: - "https://your-custom-test-url.com" ``` ## 技术支持 如果遇到问题,请: 1. 检查日志输出 2. 验证配置文件 3. 测试网络连接 4. 查看故障排除部分 5. 提交Issue到项目仓库