如何在 httpd/apache 中配置 ssl 以应对大流量?

如何在 httpd/apache 中配置 ssl 以应对大流量?

我在 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 查找。AllowDeny
  • 您至少有一个AllowOverride All。这会导致每次请求时额外读取.htaccess文件。将配置从.htaccess上下文移至Directory上下文。
  • 缓存等。在责怪 SSL 配置之前,您可以做很多事情。

相关内容