我在 apache 2.2 上运行启用 SSL 的网站,它相对静态,但数据是从 mysql 获取的,因为它使业务方更容易更新。
关于该网站的几点:
1. 它在低负载条件下运行良好
2. 即使在流量大的情况下,它也可以在没有 SSL 的情况下正常运行
3. 但启用 SSL 后,它在流量大时会变慢。4
. 只要不活动时间超过 5 秒,它就会建立新的 SSL 连接/握手。5
. 流量大时 SSL 握手最多需要 12-15 秒。
SSL配置文件
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/path/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLStrictSNIVHostCheck off
SSLProtocol all -SSLv3
SSLCipherSuite ALL:+HIGH:+TLSv1:!ADH:!EXP:!SSLv2:!MEDIUM:!LOW:!NULL:!aNULL
SSLHonorCipherOrder on
HostnameLookups Off
NameVirtualHost ip:port
<VirtualHost ip:port>
ServerName domain
DocumentRoot /folder/
<Directory /folder/>
Options -Indexes
AllowOverride All
</Directory>
ErrorLog /path/error_log
CustomLog /path/access_log common
SSLEngine on
SSLCertificateFile /path.txt
SSLCertificateKeyFile /path.key
SSLCertificateChainFile /path.txt
</VirtualHost>
问题
如何定制 ssl.conf 以在不升级硬件的情况下获得最佳性能?
答案1
当然,即使配置完美,SSL 也会消耗更多资源,因为它需要加密所有内容。很可能是您的服务器性能不足。但是,您可能可以先尝试调整其他方面。
- 最后将 Apache 2.2 升级到 2.4。它是 6 年前发布的,比它的老版本年轻 7 年。尽管它具有更多功能,但性能更快。使用 Apache 2.4,您还可以选择多处理模块(最大可测量参数):工人或者事件可能会运行得更快。
- 您可能还拥有其他旧软件版本,其性能比当前版本慢,但您的问题缺少此信息,假设 SSL 配置是问题所在。升级 SQL 服务器以及用于从中获取内容的任何内容都可能受益。此外,MySQL 可以升级到 MariaDB。
- 只加载你需要的模块。你的需求比较简单,所以很容易就会有不必要的模块。
- 通过禁用并避免在&
HostnameLookups
中使用主机名而不是 IP 来检查您是否没有执行 DNS 查找。Allow
Deny
- 您至少有一个
AllowOverride All
。这会导致每次请求时额外读取.htaccess
文件。将配置从.htaccess
上下文移至Directory
上下文。 - 缓存等。在责怪 SSL 配置之前,您可以做很多事情。