本次优化按照优先级逐步实施了以下改进:
- API密钥安全 - 支持环境变量读取API密钥
- 异常处理细化 - 保留现有细粒度异常处理
- 连接池优化 - 添加HTTP会话和连接池管理
- 正则缓存优化 - 使用实例级缓存替代
lru_cache
- 资源管理优化 - 添加上下文管理器和和资源清理方法
- 日志规范化 - 保留现有日志格式
新增了环境变量支持,可以通过以下环境变量配置AI服务:
SSLOGS_AI_API_KEY- API密钥SSLOGS_AI_CLOUD_PROVIDER- 云服务提供商SSLOGS_AI_LOCAL_PROVIDER- 本地服务提供商SSLOGS_AI_TYPE- AI类型(cloud/local)
def _init_http_session(self):
"""初始化HTTP会话,配置连接池和重试策略"""
self.session = requests.Session()
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["HEAD", "GET", "OPTIONS", "POST"]
)
adapter = HTTPAdapter(
max_retries=retry_strategy,
pool_connections=5,
pool_maxsize=10
)
self.session.mount("http://", adapter)
self.session.mount("https://", adapter)# 替代 @lru_cache 装饰器
@lru_cache(maxsize=128)
def _compile_field_pattern(self, pattern: str) -> re.Pattern:
...
# 新增实例级缓存
def _compile_field_pattern(self, pattern: str) -> re.Pattern:
"""编译字段正则表达式(使用实例级缓存替代lru_cache避免内存泄漏)"""
# 检查实例级缓存
if pattern in self._pattern_cache:
self.cache_hits += 1
return self._pattern_cache[pattern]
# 编译新的正则表达式
self.cache_misses += 1
if '(' not in pattern:
pattern = f'({pattern})'
compiled = re.compile(pattern)
# LRU淘汰策略
if len(self._pattern_cache) >= self._cache_max_size:
oldest_key = next(iter(self._pattern_cache.keys()))
del self._pattern_cache[oldest_key]
self._pattern_cache[pattern] = compiled
return compileddef __enter__(self):
"""上下文管理器入口"""
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""上下文管理器出口"""
self._cleanup_resources()
return Falsedef _cleanup_resources(self):
"""清理资源"""
try:
# 清理解析器缓存
if hasattr(self.parser, 'clear_cache'):
self.parser.clear_cache()
# 清理规则引擎资源
if hasattr(self.rule_engine, 'compiled_rules'):
self.rule_engine.compiled_rules.clear()
# 清理AI分析器会话
if self.ai_analyzer and hasattr(self.ai_analyzer, 'session'):
self.ai_analyzer.session.close()
# 强制垃圾回收
gc.collect()
self.logger.debug("资源清理完成")
except Exception as e:
self.logger.warning(f"资源清理失败: {e}")运行测试验证代码是否正常运行:
- 巻加更多单元测试
- 完善文档
- 茟续监控性能指标 +++++++ REPLACE