希望这是一个好问题,对处于类似情况的任何人都有用。我最近接替了我公司一位非常资深的 Linux 管理员,这是我第一次不得不设置一个新服务器来为我们的客户提供我们的内容。我的前任在这件事上留下了有限的文件,因为在他离开时其他事情更重要。我已经广泛地参考了我拥有的文档,以及来自以前服务器的配置和大量在线阅读来设置所有内容。
我正在构建的服务器的“堆栈”如下:CentOS 7、Apache 2.4.6、MariaDB 5.X、服务于 JSP/Servlets 的 Tomcat 7。以前的生产安装使用 CentOS 5、旧版本的 Apache 和 MySQL 以及 Tomcat 5.X。
Apache 是前端,它使用 AJP 连接到 Tomcat 后端。大多数流量将是 HTTPS。
该服务器是,我认为是 Gen 9 HP 服务器,它在 RAID 1 阵列中具有 32GB RAM 和 SSD。在让它工作后,我现在关心的是最大化它同时为用户提供服务的能力,我预计数百个用户的爆发并不少见。为此,我希望防止堆栈中的任何一点出现瓶颈:从 Tomcat 和 MariaDB 开始,并针对这些采取特定的措施,我对这些措施感到满意。继续使用 Apache,但是我发现更难理解我应该做什么。
有 3 种不同类型的“工人”,我在优化这些方面有 3 个主要问题:
1. 有三个选项,prefork、mpm_worker 和 mpm_event。我不太明白如何配置它们,尽管我对它们的用途有一个大致的了解。
2. 与之前服务器中的 Apache 不同,StartServers、ServerLimit、MaxRequestsPerChild 等选项未在 /etc/httpd/conf/httpd.conf 中列出。是否有我必须手动覆盖的默认设置?除了“它们是上次手动添加的”之外,还有其他原因可以在旧的 httpd.conf 中找到设置而不是新的设置吗?
我指的是这个,在旧的 httpd.conf 中,我在新配置文件的任何地方都看不到任何类似的东西,只有一个规范:
// prefork MPM
// StartServers:要启动的服务器进程数
// MinSpareServers:保持空闲的最小服务器进程数
// MaxSpareServers:保持空闲的最大服务器进程数
// ServerLimit:MaxClients 的最大值服务器的生命周期
// MaxClients:允许启动的最大服务器进程数
// MaxRequestsPerChild:服务器进程服务的最大请求数 …