我们最近将网站转换为https
。在安装和测试证书后,我们在 .htaccess 中创建了 301 重定向。几天内一切正常,几乎没有明显的性能影响。
第三天或第四天我们遇到了OOM
问题。在接下来的几天里,我们会看到同样的模式重复出现。大约在上午 9:15(当我们的服务器开始看到负载增加时),我们的内存使用量会逐渐增加,并且经常导致服务器关闭 memcached 或 mysql。这很难理解,因为我们会在当天晚些时候看到更大的使用量(根据谷歌分析),而没有任何问题。
Server Version: Apache/2.4.25 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4 PHP/5.5.38
Server MPM: prefork
Start servers: 10
Min spare servers: 5
server limit: 256
max request workers: 256
max connections per child: 2500*
keep alive: on
keep alive timeout: 1
我降低了最大连接数,因为我们注意到在问题期间每个子进程的内存使用量似乎显著增加。每个htop
子进程的每个 RES 通常为 25000k。在压力期间则超过 50000k。所以我想增加生成新子进程的频率。不清楚这是否有任何不同。
我们检查了所有cron
工作,以确保在压力时期没有安排任何特殊工作。
添加是否ssl
会显著增加内存使用量apache
?为什么只在这个特定时间 - 甚至不在我们最繁忙的时间附近(尽管这可能是使用量增长最快的时间)。
更新。我们删除了 301 重定向,试图确定这是否是原因。果然,服务器今天处理了上午 9:30 的高峰,没有出现丝毫内存或 CPU 压力。所以我们仍然启用了 https - 但不确定我们的 http 和 https 工作负载目前有何不同。
更新 2. 根据要求重写
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
(最初有 301 重定向 - 但因解决内存问题而取消)
答案1
William,https 肯定会增加 Apache 提供网页方式的开销,这就是为什么我询问您是否启用了 http/2,因为 http/2 在处理 https 请求时效率更高……它也会使您的网站速度更快,而所需的性能定制更少。
一定要调查此事。