LEN

Swoole Task 阻塞 Worker 开发教训
task操作的次数必须小于onTask处理速度,如果投递容量超过处理能力,task会塞满缓存区,导致worker进...
扫描右侧二维码阅读全文
08
2019/03

Swoole Task 阻塞 Worker 开发教训

task操作的次数必须小于onTask处理速度,如果投递容量超过处理能力,task会塞满缓存区,导致worker进程发生阻塞。worker进程将无法接收新的请求

最近用Swoole写量化铺单程序, 一个交易对时 感觉良好 50 task ok够用 但当交易对上到两位数, 并且task进程中发布和撤销委托耗时延迟时, task塞满了缓存区, 导致worker 进程阻塞, 内部价格对标延迟严重, 亏损1000刀. 肉疼....
通过扩容task , 平台优化批量撤销接口时长, 本地缓存撤销中委托记录 防止重复撤销造成服务器压力, 经过一系列优化 业务终于稳定了.

总结教训: task 不是万能的, 他也会影响你的 worker 使用请评估 task 中投递任务的处理速度!

网上有人使用 channel 代替 task 使用好处是不会阻塞worker
but channel 配合 协程 使用才更有效果吧. 一直不敢用swoole协程写复杂业务, 以后有机会测试下.

最后修改:2019 年 11 月 04 日 11 : 18 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

1 条评论

  1. test

    沙发