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协程写复杂业务, 以后有机会测试下.

Last modification:March 8th, 2019 at 05:10 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

One comment

  1. test

    沙发