比如在 Google App Engine 上部署 Online Judge
和普通的 OJ 相比,实现是否会变得更为简单?
安全性是否也会相应提升?
1
crystom 2016-05-01 22:37:00 +08:00
前端还可以,判题的没法放在这种平台上吧
|
2
SCaffrey 2016-05-01 22:44:18 +08:00
判题服务器性能不够用吧?
|
3
SCaffrey 2016-05-01 22:45:36 +08:00 1
|
4
icreeper 2016-05-01 22:56:40 +08:00
记得 hustoj 有个 sae 的版本
|
5
virusdefender 2016-05-01 22:57:28 +08:00
感谢 @SCaffrey 的推荐
我们的 oj Web 部分暂时无法在 sae gae 类的 PaaS 上部署,限制太多了。 而沙箱保证安全依靠 PaaS 的话,好像也不太行,虽然 PaaS 也有沙箱,但是是隔离你的代码和底层环境的,你部署的代码已经是受限的了, sae 好像连进程都不能起, socket 也不行。更别谈调用编译器写文件了。 可以尝试一下 daoCloud 类的 docker PaaS ,限制还少一些。 我们是用的 secomp 过滤系统调用。代码在 https://github.com/QingdaoU/Judger |
6
virusdefender 2016-05-01 22:59:51 +08:00
4 楼说的 hustoj 的 sae 版本也仅仅是 Web 部分,判题还是得通过网络通信转发到自己的服务器上。
楼主的帖子应该更侧重判题部分吧。 |
7
wph95 2016-05-01 23:01:46 +08:00 1
1. secomp -> seccomp
2. 讲道理来说 权限越高越好限制, PaaS 不会给你那么高的权限 3. hustoj 的 sae 版本只是一个 界面托管,评测还是要自己找服务器 4. 想简单的搭建 oj ? 土豪请选择 sphere-engine.com , 学校 or 学生团队 可以找 codevs 要免费的评测资源:) |
8
holyghost 2016-05-02 11:34:50 +08:00
@virusdefender
简单看了下 judger ,请教几个问题: 1. 直接使用 seccomp 限制系统调用,和使用 docker 的 secure option 限制本质上是否可以理解为是相同的? 2. 是什么原因当初没有选择 docker 呢?或者换一个问法, docker 在限制内存使用、 cpu 使用和运行时长、限制调用方面有什么缺点吗? 谢谢~ |
9
virusdefender 2016-05-02 12:01:11 +08:00
@holyghost
Docker 的 security-opt 、 CPU 时间等选项貌似是限制里面所有的进程的,而实际上我们需要一个父进程来控制子进程(子进程就是用户的代码),来获取运行时间、内存占用等数据。这会不会让父进程也太受限了? Docker 和使用 seccomp 并没有任何冲突,而且我们现在也是在 Docker 中运行 judger 的,当然最主要是为了方便部署,其次才是使用 Docker 做一层隔离。 在使用 Docker 做判题方面,@wph95 更有经验,可以请教一下他。 |
10
virusdefender 2016-05-02 12:01:56 +08:00 1
@wph95 上面的回复 @貌似没管用,你可以看下 8 楼的问题。
|
11
holyghost 2016-05-02 12:13:16 +08:00
@virusdefender 感谢
|
14
wph95 2016-05-02 17:23:36 +08:00 1
@holyghost
1. IO 问题从没有遇到过。 2. Docker 性能在 Online Judge 场景下很不好。 > docker 在限制内存使用、 cpu 使用和运行时长、限制调用方面有什么缺点吗? 基于 cgroups ,并没有缺点 因为性能原因, CodeVS 已经弃用 docker 方案了。 |
15
holyghost 2016-05-02 19:57:44 +08:00
@wph95 谢谢。
>> Docker 性能在 Online Judge 场景下很不好。 >> 因为性能原因, CodeVS 已经弃用 docker 方案了。 按照之前的经验, docker 通常在一台服务器(例如, 8 核 16G )上能达到并发处理多少提交呢? 另外,是否方便简单透露下现在 CodeVS 使用的方案呢? 再次感谢。 |