Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
lksltjw
V2EX  ›  云计算

如果在 PaaS 上部署 Online Judge

  •  
  •   lksltjw · May 1, 2016 · 3121 views
    This topic created in 3685 days ago, the information mentioned may be changed or developed.

    比如在 Google App Engine 上部署 Online Judge

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

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

    18 replies    2016-05-03 10:20:46 +08:00
    crystom
        1
    crystom  
       May 1, 2016
    前端还可以,判题的没法放在这种平台上吧
    SCaffrey
        2
    SCaffrey  
       May 1, 2016
    判题服务器性能不够用吧?
    SCaffrey
        3
    SCaffrey  
       May 1, 2016   ❤️ 1
    icreeper
        4
    icreeper  
       May 1, 2016
    记得 hustoj 有个 sae 的版本
    virusdefender
        5
    virusdefender  
       May 1, 2016
    感谢 @SCaffrey 的推荐

    我们的 oj Web 部分暂时无法在 sae gae 类的 PaaS 上部署,限制太多了。

    而沙箱保证安全依靠 PaaS 的话,好像也不太行,虽然 PaaS 也有沙箱,但是是隔离你的代码和底层环境的,你部署的代码已经是受限的了, sae 好像连进程都不能起, socket 也不行。更别谈调用编译器写文件了。

    可以尝试一下 daoCloud 类的 docker PaaS ,限制还少一些。

    我们是用的 secomp 过滤系统调用。代码在 https://github.com/QingdaoU/Judger
    virusdefender
        6
    virusdefender  
       May 1, 2016
    4 楼说的 hustoj 的 sae 版本也仅仅是 Web 部分,判题还是得通过网络通信转发到自己的服务器上。

    楼主的帖子应该更侧重判题部分吧。
    wph95
        7
    wph95  
       May 1, 2016   ❤️ 1
    1. secomp -> seccomp
    2. 讲道理来说 权限越高越好限制, PaaS 不会给你那么高的权限
    3. hustoj 的 sae 版本只是一个 界面托管,评测还是要自己找服务器
    4. 想简单的搭建 oj ? 土豪请选择 sphere-engine.com , 学校 or 学生团队 可以找 codevs 要免费的评测资源:)
    holyghost
        8
    holyghost  
       May 2, 2016
    @virusdefender
    简单看了下 judger ,请教几个问题:

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

    谢谢~
    virusdefender
        9
    virusdefender  
       May 2, 2016
    @holyghost

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

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

    在使用 Docker 做判题方面,@wph95 更有经验,可以请教一下他。
    virusdefender
        10
    virusdefender  
       May 2, 2016   ❤️ 1
    @wph95 上面的回复 @貌似没管用,你可以看下 8 楼的问题。
    holyghost
        11
    holyghost  
       May 2, 2016
    azh7138m
        12
    azh7138m  
       May 2, 2016 via Android
    @holyghost IO 感人, hustoj 是有过 docker 版的
    holyghost
        13
    holyghost  
       May 2, 2016 via iPhone
    @azh7138m 谢谢。

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

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

    再次感谢。
    wph95
        16
    wph95  
       May 3, 2016   ❤️ 2
    @holyghost
    如果是 CodeVS 用台 8 核服务器评测,大概日 20 万评测量没什么问题。足够一场 2000 人的比赛了。
    用 docker 少一半吧。
    // 我一般都是去 do 上创一片 1 核机器组个集群。
    holyghost
        17
    holyghost  
       May 3, 2016
    @wph95 肥肠感谢!么么哒。
    wph95
        18
    wph95  
       May 3, 2016
    @holyghost 我 github 留了邮箱,需要帮助可以邮件联系:)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3133 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 93c8b4a0 · 43ms · UTC 14:35 · PVG 22:35 · LAX 07:35 · JFK 10:35
    ♥ Do have faith in what you're doing.