V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
lksltjw
V2EX  ›  云计算

如果在 PaaS 上部署 Online Judge

  •  
  •   lksltjw · 2016-05-01 22:27:44 +08:00 · 2687 次点击
    这是一个创建于 3120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如在 Google App Engine 上部署 Online Judge

    和普通的 OJ 相比,实现是否会变得更为简单?

    安全性是否也会相应提升?

    18 条回复    2016-05-03 10:20:46 +08:00
    crystom
        1
    crystom  
       2016-05-01 22:37:00 +08:00
    前端还可以,判题的没法放在这种平台上吧
    SCaffrey
        2
    SCaffrey  
       2016-05-01 22:44:18 +08:00
    判题服务器性能不够用吧?
    SCaffrey
        3
    SCaffrey  
       2016-05-01 22:45:36 +08:00   ❤️ 1
    icreeper
        4
    icreeper  
       2016-05-01 22:56:40 +08:00
    记得 hustoj 有个 sae 的版本
    virusdefender
        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
    virusdefender
        6
    virusdefender  
       2016-05-01 22:59:51 +08:00
    4 楼说的 hustoj 的 sae 版本也仅仅是 Web 部分,判题还是得通过网络通信转发到自己的服务器上。

    楼主的帖子应该更侧重判题部分吧。
    wph95
        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 要免费的评测资源:)
    holyghost
        8
    holyghost  
       2016-05-02 11:34:50 +08:00
    @virusdefender
    简单看了下 judger ,请教几个问题:

    1. 直接使用 seccomp 限制系统调用,和使用 docker 的 secure option 限制本质上是否可以理解为是相同的?
    2. 是什么原因当初没有选择 docker 呢?或者换一个问法, docker 在限制内存使用、 cpu 使用和运行时长、限制调用方面有什么缺点吗?

    谢谢~
    virusdefender
        9
    virusdefender  
       2016-05-02 12:01:11 +08:00
    @holyghost

    Docker 的 security-opt 、 CPU 时间等选项貌似是限制里面所有的进程的,而实际上我们需要一个父进程来控制子进程(子进程就是用户的代码),来获取运行时间、内存占用等数据。这会不会让父进程也太受限了?

    Docker 和使用 seccomp 并没有任何冲突,而且我们现在也是在 Docker 中运行 judger 的,当然最主要是为了方便部署,其次才是使用 Docker 做一层隔离。

    在使用 Docker 做判题方面,@wph95 更有经验,可以请教一下他。
    virusdefender
        10
    virusdefender  
       2016-05-02 12:01:56 +08:00   ❤️ 1
    @wph95 上面的回复 @貌似没管用,你可以看下 8 楼的问题。
    holyghost
        11
    holyghost  
       2016-05-02 12:13:16 +08:00
    azh7138m
        12
    azh7138m  
       2016-05-02 14:42:46 +08:00 via Android
    @holyghost IO 感人, hustoj 是有过 docker 版的
    holyghost
        13
    holyghost  
       2016-05-02 14:59:16 +08:00 via iPhone
    @azh7138m 谢谢。

    io 上的劣势我觉得可以用扩容解决,钱暂时不是问题。
    wph95
        14
    wph95  
       2016-05-02 17:23:36 +08:00   ❤️ 1
    @holyghost
    1. IO 问题从没有遇到过。
    2. Docker 性能在 Online Judge 场景下很不好。
    > docker 在限制内存使用、 cpu 使用和运行时长、限制调用方面有什么缺点吗?
    基于 cgroups ,并没有缺点
    因为性能原因, CodeVS 已经弃用 docker 方案了。
    holyghost
        15
    holyghost  
       2016-05-02 19:57:44 +08:00
    @wph95 谢谢。
    >> Docker 性能在 Online Judge 场景下很不好。
    >> 因为性能原因, CodeVS 已经弃用 docker 方案了。

    按照之前的经验, docker 通常在一台服务器(例如, 8 核 16G )上能达到并发处理多少提交呢?
    另外,是否方便简单透露下现在 CodeVS 使用的方案呢?

    再次感谢。
    wph95
        16
    wph95  
       2016-05-03 10:11:43 +08:00   ❤️ 2
    @holyghost
    如果是 CodeVS 用台 8 核服务器评测,大概日 20 万评测量没什么问题。足够一场 2000 人的比赛了。
    用 docker 少一半吧。
    // 我一般都是去 do 上创一片 1 核机器组个集群。
    holyghost
        17
    holyghost  
       2016-05-03 10:19:23 +08:00
    @wph95 肥肠感谢!么么哒。
    wph95
        18
    wph95  
       2016-05-03 10:20:46 +08:00
    @holyghost 我 github 留了邮箱,需要帮助可以邮件联系:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.