Skip to content

config_zh

Azure99 edited this page Jun 7, 2020 · 7 revisions

配置说明

本文将详细为您介绍OpenJudger的配置文件,配置文件为程序根目录下Config.json文件

您可以查看配置模板

如果不存在配置文件,在运行OpenJudger时程序会自动生成一个配置文件模板

修改配置文件后,您需要重新启动OpenJudger以使配置生效

全局配置

此部分是OpenJudger的全局配置,*标识的配置字段为默认适配器实现使用到的字段, 二次开发的适配器可能不需要这些字段, 这种情况下无需配置它们

如无特殊说明, 时间相关字段的单位均为毫秒(ms)

  • AdapterDllPath: 适配器的程序集(DLL)路径, 适配器应当基于Judger.Adapter开发, 并实现通信接口, 目前提供Generic、SDNUOJ、HUSTOJ三个适配器
  • *JudgerName: 评测机名称
  • *Password: 认证密码
  • *TaskFetchInterval: 任务轮询周期, 每隔多长时间检查是否有新任务(调用ITaskFetcher.Fetch()方法), 注意: 轮询只是OpenJudger默认的通信模型, 您可以在Adapter中实现诸如阻塞/长连接/订阅等模型
  • *FetchTimeout: 通信超时时间
  • *TaskFetchUrl: 获取评测任务的后端URL
  • *TestDataFetchUrl: 拉取测试数据的后端URL
  • *ResultSubmitUrl: 提交评测结果的后端URL
  • TestDataDirectory: 测试数据存放目录
  • LogDirectory: 日志存放目录
  • MaxQueueSize: 最大等待队列长度, 为了提高吞吐率, 在达到最大任务数时OpenJudger仍然可以提前拉取测试任务, 有任务执行完后, 队列中的任务会立即执行
  • MaxRunning: 最多同时评测的任务数, 此值应当 <= 处理器核心数, 否则可能增加进程的上下文切换, 最终影响执行效率
  • InterceptUnsafeCode: 是否启用基于正则的恶意代码拦截
  • InterceptionRules: 拦截规则文件, 注意: 为了安全起见, 推荐您利用Docker技术进行隔离
  • MonitorInterval: 运行时监控周期, 每隔多长时间对程序资源消耗进行一次检查
  • MinimumMemoryCost: 最小内存消耗, 当实际内存消耗小于此值时, 提交的内存消耗会被替换为此值, 另外, SQL评测中无内存消耗的概念, 也会显示此值
  • AdditionalConfigs: 额外的配置信息, 默认配置模型可能不足以满足您的需要, 例如使用Token进行身份认证, 使用非HTTP方式与服务端通信等, 可以在此处存放一些配置信息
  • Languages: 请参考编程语言配置
  • Databases: 请参考数据库评测配置

编程语言配置

此部分是OpenJudger的编程语言配置, 描述常规编程题目可以使用的编程语言, 以及如何调用它们的编译器、执行程序

动态字段: 您可以在Path, WorkDirectory, Args字段中使用<tempdir>和<appdir>, 它们分别代表当前任务的评测目录和OpenJuger所在的根目录

  • Name: 语言名称
  • JudgeDirectory: 语言的评测目录, 此语言的所有评测任务都将在此目录下分配临时目录
  • NeedCompile: 是否需要编译(Python等脚本语言不需要)
  • SourceCodeFileName: 源文件名
  • SourceCodeFileExtension: 源文件扩展名
  • ProgramFileName: 程序文件名, 编译后的可执行文件名
  • MaxCompileTime: 最长编译时间, 超过此时间还未完成编译的任务将直接判定编译失败
  • CompilerPath: 编译器路径
  • CompilerWorkDirectory: 编译器工作目录
  • CompilerArgs: 编译器参数
  • RunnerPath: 运行器路径, 例如C/C++的运行器是它们本身, 而Java的运行器则为Java
  • RunnerWorkDirectory: 运行器工作目录
  • RunnerArgs: 运行器参数
  • UseUtf8: 是否使用UTF-8编码
  • RunningInVm: 是否运行在虚拟机中, 如Java语言是
  • OutputLimit: 输出限制, 单位为字节, 可防止程序死循环输出大量数据
  • TimeCompensation: 时间补偿系数, 时间 = 真实时间 * 系数, 可在一定程度上改善分布式评测机性能不一致的问题

数据库评测配置

此部分是OpenJudger的SQL评测配置, 目前支持MySQL/MariaDB

动态字段: 您可以在ConnStringTemplate字段中使用<Server> <Database> <User> <Password>来动态生成连接字符串

  • Name: 数据库管理系统(DBMS)名称, 如MySQL数据库
  • CaseSensitive: 是否大小写敏感, 推荐false
  • DriverPath: 数据库驱动路径, 对于MySQL, 推荐使用Pomelo.Data.MySql
  • Server: 数据库服务器地址
  • Database: 数据库名称
  • User: 特权用户名(root)
  • Password: 密码
  • ConnStringTemplate: 连接字符串
Clone this wiki locally