最近在测试一个大模型推理平台时,发现其可维护性存在严重问题,特此记录踩坑过程。
问题现象
平台在运行约30小时后出现内存泄漏,CPU使用率持续飙升,最终导致服务崩溃。通过监控发现,每次推理请求都会产生新的线程,但线程池未正确回收。
复现步骤
- 使用以下脚本进行压力测试:
import requests
import threading
def test_request():
url = "http://localhost:8000/v1/completions"
data = {
"prompt": "请生成一段关于AI的段落",
"max_tokens": 100
}
response = requests.post(url, json=data)
print(response.json())
# 启动50个并发线程
threads = []
for i in range(50):
t = threading.Thread(target=test_request)
threads.append(t)
t.start()
for t in threads:
t.join()
- 观察系统资源使用情况
- 约1小时后服务崩溃
根本原因
测试发现平台使用了全局变量缓存模型,但未实现LRU淘汰机制,导致内存占用持续增长。同时日志文件未配置轮转策略,日志文件过大导致磁盘空间耗尽。
建议:在生产环境部署前必须进行长时间压力测试,并建立完善的监控告警机制。

讨论