设计一个OJ

0x01 据说国内各大学学习编程用的OnlineJudge(简称OJ)大都是学生(大三四)编写的,常常因为学生毕业而不再有人维护,外加各种考虑不周导致OJ稳定性不好…诸如考着试服务器挂了,老师一脸懵逼的事情都略有耳闻。于是就有目前国内比较著名的OJ只有杭电和北大。

0x02 通常考虑:传统网站(如PHP)没多一个用户访问,服务器就会多开一个php进程,当同时访问的人一多,服务器内存/CPU开销就大,速度变慢,再多可能就崩溃了。对于普通的网页处理各种服务都做了不少优化,让它负载能力还可以,但是对于OJ系统,它需要执行GCC等编译器编译代码,另外根据题目需要可能还会有各种递归/动态规划等大CPU/内存占用的程序需要被运行,再比个赛/考个试几十个这样的程序同时跑,这无疑让低配置(乃至高配)的服务器难以承受。故在此写些从其他OJ上的获得的灵感,仅供参考。

继续阅读“设计一个OJ”