# 3.6 微调服务器的设置

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

对于 PHP, 使用像 `Alternative PHP Cache`(Debian 软件包 `php-apc`) 这样的操作码缓存有利于提高性能; 要上传大型测试用例, 请参阅 [内存限制](../a-appendix/8-common-problems-and-their-solutions/8.5-memory-limit-errors-in-web-interface) 部分

可能需要或微调一些 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 用户默认是没有密码的, 十分有必要设置一个
* 当需要最大化性能时, 你可以考虑对 `scorecache` 和 `rankcache` 数据表使用 `Memory` 引擎; 当服务器完全宕机时, 它们会丢失信息, 但是可以从控制台界面(jury interface)重新计算
