rat_quickdns 0.2.4

A high-performance, feature-rich DNS client library with support for multiple transport protocols, load balancing, caching, and filtering
Documentation
# 🚀 RatQuickMem Python 压力测试套件

本目录包含两个 Python 压力测试程序,用于验证 RatQuickMem 在各种极端条件下的性能和稳定性。

## 📋 测试程序对比

| 特性 | `stress_test.py` | `simple_stress_test.py` |
|------|------------------|------------------------|
| **依赖要求** | 需要 `psutil`| 无额外依赖 |
| **内存监控** | ✅ 详细内存使用监控 | ❌ 无内存监控 |
| **测试强度** | 🔥 高强度 (长时间运行) | 🔥 中等强度 (快速验证) |
| **测试时长** | ~10-15 分钟 | ~3-5 分钟 |
| **报告详细度** | 📊 详细 JSON 报告 | 📋 简洁控制台报告 |
| **适用场景** | 生产环境验证 | 开发调试验证 |

## 🛠️ 安装依赖

### 完整版测试 (推荐)
```bash
# 安装 psutil 用于内存监控
pip install psutil
```

### 简化版测试
```bash
# 无需额外依赖,直接运行
```

## 🚀 运行测试

### 方式一:完整压力测试
```bash
cd rat_quickmem/examples/python
python stress_test.py
```

**测试内容:**
- 🔥 高并发编解码 (50线程 × 100操作)
- 📦 大数据处理 (1MB - 20MB)
- 🏊 内存池压力测试 (1000次迭代)
- 📊 批量操作极限测试 (最大10000项)
- ⏰ 长时间稳定性测试 (5分钟)
- 💾 详细内存使用监控

### 方式二:简化压力测试
```bash
cd rat_quickmem/examples/python
python simple_stress_test.py
```

**测试内容:**
- 🔥 并发操作测试 (20线程 × 50操作)
- 📦 大数据处理 (1MB - 10MB)
- 📊 批量操作测试 (最大10000项)
- 🏊 内存池验证 (500次迭代)
- 🔀 混合负载测试 (60秒)

## 📊 测试场景详解

### 1. 并发编解码测试
- **目标**: 验证多线程环境下的数据安全性
- **方法**: 多线程同时进行编解码操作
- **验证**: 数据完整性 + 线程安全性

### 2. 大数据处理测试
- **目标**: 验证大数据块的处理能力
- **方法**: 测试 1MB - 20MB 数据的编解码
- **指标**: 处理速度 (MB/s) + 编码开销

### 3. 批量操作测试
- **目标**: 找到批量处理的性能边界
- **方法**: 逐步增加批量大小直到达到限制
- **验证**: 安全限制生效 + 性能表现

### 4. 内存池压力测试
- **目标**: 验证内存池的复用效率
- **方法**: 大量重复操作观察缓冲区变化
- **指标**: 缓冲区增长 + 内存使用

### 5. 长时间稳定性测试
- **目标**: 验证长期运行的稳定性
- **方法**: 持续随机操作检测内存泄漏
- **指标**: 错误率 + 内存增长趋势

## 📈 性能基准参考

### 优秀性能指标
- **并发吞吐量**: > 1000 ops/s
- **大数据处理**: > 100 MB/s
- **批量处理**: 支持 5000+ 项
- **成功率**: > 99.9%
- **内存增长**: < 10 MB (长时间运行)

### 良好性能指标
- **并发吞吐量**: > 500 ops/s
- **大数据处理**: > 50 MB/s
- **批量处理**: 支持 1000+ 项
- **成功率**: > 99%
- **内存增长**: < 50 MB (长时间运行)

## 🔧 自定义测试参数

### 修改测试强度
```python
# 在 stress_test.py 中修改
runner.test_concurrent_encoding(
    num_threads=100,        # 增加线程数
    operations_per_thread=200  # 增加每线程操作数
)

runner.test_large_data_processing([1, 5, 10, 20, 50])  # 测试更大数据

runner.test_long_running_stability(duration_minutes=10)  # 延长测试时间
```

### 修改测试数据
```python
# 自定义数据生成
def generate_custom_data(size_kb: int) -> bytes:
    # 生成特定模式的测试数据
    pattern = b"\x00\xFF" * (size_kb * 512)
    return pattern
```

## 📋 测试报告解读

### 控制台输出
```
[14:30:15] 开始并发测试: 20 线程 x 50 操作
[14:30:18] ✅ 并发测试完成: 1000/1000 成功, 847.3 ops/s
```

### JSON 报告 (完整版)
```json
{
  "timestamp": "2024-01-15 14:30:20",
  "total_time_seconds": 180.5,
  "memory_delta_mb": 2.3,
  "error_count": 0,
  "results": {
    "concurrent_encoding": {
      "success_rate": 100.0,
      "ops_per_second": 847.3,
      "avg_operation_time_ms": 1.18
    }
  }
}
```

## ⚠️ 故障排除

### 常见问题

1. **ImportError: No module named 'psutil'**
   ```bash
   pip install psutil
   # 或使用简化版测试
   python simple_stress_test.py
   ```

2. **内存不足错误**
   ```python
   # 减少测试数据大小
   test_large_data_processing([1, 2, 5])  # 而不是 [1, 5, 10, 20]
   ```

3. **批量操作失败**
   ```
   ❌ 10000 项失败: CountExceeded
   # 这是正常的,表示安全限制生效
   ```

4. **线程安全错误**
   ```python
   # 减少并发线程数
   test_concurrent_operations(num_threads=5)  # 而不是 20
   ```

### 性能调优建议

1. **提高并发性能**
   - 使用更快的存储设备 (SSD)
   - 增加系统内存
   - 调整线程池大小

2. **优化大数据处理**
   - 使用流式处理
   - 分块处理大文件
   - 启用压缩优化

3. **内存池优化**
   - 预热内存池
   - 调整缓冲区大小阈值
   - 定期清理未使用缓冲区

## 🎯 测试目标检查清单

- [ ] **功能正确性**: 所有编解码操作数据完整
- [ ] **并发安全性**: 多线程环境无数据竞争
- [ ] **性能表现**: 满足预期吞吐量指标
- [ ] **内存效率**: 内存池正常工作,无泄漏
- [ ] **安全防护**: 批量限制和大小限制生效
- [ ] **长期稳定**: 长时间运行无崩溃

## 📞 技术支持

如果测试过程中遇到问题:

1. 检查错误日志和详细报告
2. 尝试简化版测试排除环境问题
3. 调整测试参数适应硬件配置
4. 查看 `ENCODING_OVERHEAD_GUIDE.md` 了解编码开销
5. 参考项目文档和示例代码

---

**🚀 开始你的压力测试之旅!**

选择适合的测试程序,验证 RatQuickMem 在你的环境中的表现。