JCoder-Pro / FeedBack

This repository is for collecting feedback from JCoder users. Your feeling and feedback matter.
5 stars 1 forks source link

多台测评机在压力过大时发生死锁 #3

Open liuxukun2000 opened 2 years ago

liuxukun2000 commented 2 years ago

表现

测评机不再接收新的任务,且已经开始运行的任务不论进行到哪个阶段都会莫名停止运行。一段时间后触发硬中断导致worker进程被 强行kill并重启。重启后的进程仍会卡在沙箱调用时。

复现步骤

增大测评机数量,选择任意一道题目进行重测。

原因分析

  1. 查阅celery文档与搜索引擎,未发现符合此问题的错误报告。
  2. 怀疑NFS卡死导致无法读取输入。(未有相关报告)
  3. 怀疑沙箱在多进程调用时有bug,但上学期重测功能一切正常。

目前已经对测评机数量与worker数量进行测试,结果如下:

  1. 单测评机多worker:
    • worker 为1/2时工作正常
    • worker大于3,发生死锁
  2. 多测评机多worker
    • 两台测评机,每台worker数量小于等于2,工作正常。
    • 多台测评机,每台worker数量为2, 发生死锁。

与上学期的区别为:

  1. 本学期使用K8S集群部署,上学期单个测评机运行在docker内。
  2. 本学期使用NFS存储数据,上学期将本机路径直接挂载到docker中。
ziqin commented 2 years ago

会不会是内存用完了?

liuxukun2000 commented 2 years ago

会不会是内存用完了?

目前看起来应该不是,第一是测评机内存非常大,第二是我用top检查了一下,cpu占用率很低,内存也没用太多。非常奇怪。