对于上下文:RHEL 7.4 上的 Apache HTTPD 2.4.6-90.el7
- 我
AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
在日志中收到警告,因此我将其添加到配置中:
<IfModule socache_shmcb_module>
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
</IfModule>
- 我检查了
socache_shmcb_module
模块是否已加载:
$ httpd -M | grep shmcb
socache_shmcb_module (shared)
- 我检查了语法没有问题:
$httpd -t
Syntax OK
- 然后顺利重启:
httpd -k graceful
- 之后,我在日志中没有看到任何
AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
警告。几个小时后,整个 HTTPD 服务器不再运行,日志报告:
[socache_shmcb:error] AH00820: shared memory segment too small
这Apache 文档本身没有提供有关此缓存大小的详细信息,我应用的值实际上是示例中显示的值。
我如何确定此缓存的可接受大小?您有关于此的任何详细信息吗AH00820错误 ?
答案1
mod_status 的输出包含有关会话缓存状态和使用情况的部分。以下是它在我们的主机上的样子:
SSL/TLS Session Cache Status:
cache type: SHMCB, shared memory: 512000 bytes, current entries: 0
subcaches: 32, indexes per subcache: 88
index usage: 0%, cache usage: 0%
total entries stored since starting: 0
total entries replaced since starting: 0
total entries expired since starting: 0
total (pre-expiry) entries scrolled out of the cache: 0
total retrieves since starting: 0 hit, 8 miss
total removes since starting: 0 hit, 0 miss
您可以监视这一点,和/或将缓存大小加倍,直到问题消失。
答案2
回答我自己的问题:我的错误是我在 Apache 配置中添加了:
<IfModule socache_shmcb_module>
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
</IfModule>
我将其更改为以下内容后,崩溃和AH00820
错误不再发生:
<IfModule socache_shmcb_module>
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
</IfModule>
这Apache 文档提到这SSLSessionCacheTimeout 300
是默认值,这就是我最初省略它的原因。看起来这个指令是强制性的,即使重复默认值也是如此。
回到我最初的问题:
1. 我如何确定该缓存的可接受大小?
SSLSessionCache
一旦使用和指令配置了 Apache SSLSessionCacheTimeout
,它就会再次稳定下来,并且mod_status
(在上面的答案 + 评论中描述)输出使用的缓存百分比。在我的情况下,它相当低,因此配置的值512000
看起来不错。
2.您是否有关于此 AH00820 错误的任何详细信息?
实际上,关于这个错误没有太多信息。我只是知道当我使用这两个指令时它就消失了。