bmrlab / gendam

A privacy-first generative DAM
6 stars 1 forks source link

提交了视频任务以后,rspc 接口会卡住一会儿 #6

Closed web3nomad closed 2 months ago

web3nomad commented 3 months ago

有可能是某个资源被锁住,也有可能是拿不到 prisma client pool 里面的 connection,因为现在限制了 connection_limit=1

web3nomad commented 3 months ago

解决办法是 connection_limit 设置大,但是之前有这个问题 https://github.com/bmrlab/tauri-dam-test-playground/issues/7 导致并发写入的时候数据缺失,主要是没有处理写入错误和重试。所以等回头处理好了,把 connection_limit 调大了就行了。

web3nomad commented 3 months ago

解决办法是 connection_limit 设置大,但是之前有这个问题 #7 导致并发写入的时候数据缺失,主要是没有处理写入错误和重试。所以等回头处理好了,把 connection_limit 调大了就行了。

connection_limit 调大还是有问题。新的问题,如果不控制频率,任务处理一次性写入一批 sqlite 过程会让 pool 里面的 connection 被用完,这样其他 sql 就执行不了了,会导致页面刷不出数据。并且 connection_limit 设太高会增加 sqlite 写入超时的概率,然后由于写入 sqlite 超时会在过程中常占着一个 connection ,最终还是会把 connection 用完。总的来说,瓶颈是在 sqlite 文件本身。

所以只能通过控制写入频率来解决问题。 超时时间 socket_timeout 设置的短一点会有好处,但效果没这么明显。

web3nomad commented 3 months ago

限制了一下 video frame 的执行速度,暂时解决了这个问题,目前 connection_limit 也设置了 10,有可能会出现写入错误

web3nomad commented 2 months ago

现在的设置是 socket_timeout=15&connection_limit=1 批量上传的时候会偶尔有一个失败,原因就是启动 db transaction 超时。也是加上重试功能就行了。

zhuojg commented 2 months ago

感觉是在生成 video caption 的时候卡得比较明显,尝试进行一下资源占用的限制,保证主进程不卡