3.6 微调服务器的设置

对于 Apache, 有无数的文档说明了如何发挥服务器的虽大性能; 特别重要的是确保 MaxClients 足够大以接受你期望的并行请求数, 但这个值不能高于 RAM 允许的数量; 此外, 我们建议关闭 KeepAlive 或确保 KeepAliveTimeout 设置仅为几秒钟; 否则大量来自公网和队伍的页面请求很容易用尽 Apache 的进程资源, 导致网站无响应, 还会影响到后台的评测

对于 PHP, 使用像 Alternative PHP Cache(Debian 软件包 php-apc) 这样的操作码缓存有利于提高性能; 要上传大型测试用例, 请参阅 内存限制 部分

可能需要或微调一些 MySQL 的默认设置:

  • max_connections: 默认值 100 太小了, 因为 Apache 线程的链接缓存, 设置成 1000 更为合适

  • max_allowed_packet: 默认值 16MB 对于一些大型测试用例来说太小了; 这应该在 MySQL 服务器和客户端配置中进行修改, 并设置成最大的测试大小的 两倍

  • innodb_log_file_size: 由于对于 redo log 的更改, 对于 5.6.20 或更新版本的 MySQL 来说, 默认值 48MB 太小了; 你应该把它至少设置为最大的测试用例大小的 十倍

  • Root 密码: MySQL 对 root 用户默认是没有密码的, 十分有必要设置一个

  • 当需要最大化性能时, 你可以考虑对 scorecacherankcache 数据表使用 Memory 引擎; 当服务器完全宕机时, 它们会丢失信息, 但是可以从控制台界面(jury interface)重新计算