生图服务优化

127 阅读1分钟

现有流程图:www.processon.com/v/6710a1387…

所有的sd都是锁线程处理的,无法实现并发的效果

高并发优化思路:

  • 启动多个服务来处理,多启动实例,启用负载均衡,使用1Panel
  • 研究多GPU加速服务
  • 使用docker部署,方便后期扩展

其他优化:

  • 显示前面有任务:get prompt
  • 任务进度条
  • 删除当前生图任务
  • 模型不用前端自己提供,调用comfyui接口:/object_info

QA

问题:ComfyUI自带队列了,为什么还要自己使用队列?

答:方便扩展,后期可以加入VIP插队等功能,使用优先级队列实现

问题:绘画函数为什么加锁?

答:因为异步函数和队列取出就是5分钟不可见的情况导致很多请求同时到达绘画函数这一步,到了之后按顺序发送prompt请求,A先到了,A来监听然后因为异步,B到了也准备监听,所以发生竞态条件。底层原因是:如果多个协程同时尝试从同一个 WebSocket 连接读取数据,可能会导致竞争条件。WebSocket 协议不支持多个并发读取操作

资料参考

comfyui-api:gitee.com/BTYY/wailik…

视频参考:www.bilibili.com/video/BV1Pm…

blog.csdn.net/jjs15259655…

juejin.cn/post/739761…

blog.csdn.net/applebomb/a…

blog.csdn.net/JuMengXiaoK…

并发集群:www.bilibili.com/video/BV14S…