关于多进程切换的问题

2021-02-03 12:24:53 +08:00
 18870715400

这边有 4 个 cpu,6 个进程, 其中第 1 个进程是上传结果的相关进程,发现每次该进程的代码执行到从数据库查询数据的这个步骤的时候,cpu 都会切换到其它的进程,再次切回这个进程已经花费了快 20s,经过验证,中间数据库查询的时间都是 ms 级别的,也就是这个进程的一个周期本来可以在 1-2s 内完成, 但是由于中间的切换时间导致一个周期循环拉的时间特别长,数据库中结果会堆积,那么应该如何解决这种问题呢,有什么比较好的方案么?

2028 次点击
所在节点    Python
9 条回复
Jooooooooo
2021-02-03 12:40:55 +08:00
20s 就不是 cpu 切换的问题
norz
2021-02-03 13:14:29 +08:00
CPU 调度这个问题情况有很多,你操作系统是啥?
dalabenba
2021-02-03 13:37:46 +08:00
这明显是进程被阻塞了,排除了 io 问题,那就是代码有问题,上秒的延迟就别怀疑系统了。看看代码的锁有没有加错的,再确认下 io 是不是真的只要 ms 级别
18870715400
2021-02-03 14:09:33 +08:00
@norz windows 系统,
@dalabenba 代码没有错误, 我只启用该进程在 2s 内就能完成一个循环
raysonx
2021-02-03 14:16:01 +08:00
恭喜你发现了震惊业界的 Windows 内核 bug,建议联系微软技术支持解决,顺便联系媒体写个新闻稿(手动狗头)
Asashiharuka
2021-02-03 14:23:21 +08:00
技术不到位,建议好好学习线程通信
wamson
2021-02-03 14:33:18 +08:00
进程被阻塞了呗,可以打印一下 6 个进程的进程状态,看下进程什么时候变成就绪态。
todd7zhang
2021-02-03 17:36:35 +08:00
倒不如考虑下,查询的 SQL 是不是和其他进程的 SQL 阻塞了?
所以你单独跑上传的进程很快,但是所有进程一起就不行。
Lemeng
2021-02-03 18:02:44 +08:00
我也觉得阻塞了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX