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

如果在 PaaS 上部署 Online Judge

  •  a href="Javascript:" Onclick="downVoteTopic(275713);" class="vote">
  •   lksltjw 2016-05-01 22:27:44 +08:00 2962 次点击
    这是一个创建于 3533 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如在 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 ihone
    @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     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:39 PVG 02:39 LAX 10:39 JFK 13:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86