-
Notifications
You must be signed in to change notification settings - Fork 11
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: 连接字符串