如何优化3G网络上网页的初始连接和SSL握手阶段的加载时间?


11

我的网站www.example.com(已启用SSL)托管在Amazon EC2共享托管上。在wifi /宽带连接上加载速度更快(加载时间<2秒)。问题出现在移动设备**(H模式而不是H +模式)**中的3G网络上。启动连接阶段,SSL握手过程需要大量时间-12秒。通过Chrome网络标签监控了时间参数。以下是该网页的测量加载时间。

页面加载网络时序统计

页面上处理的数据类型:经过 测试的网页通过AJAX接收5个键值配对的JSON数据,并将其显示在网页上。这是一个非常轻量级的页面,仅包含5-6个文本内容。

我已经看到许多网站在3G移动网络(H模式)上的加载速度更快。在3G网络上的初始连接建立阶段,我的网站太慢了。有人可以协助我解决/优化初始连接阶段的延迟吗?转向专用托管可以解决当前问题吗?

Web服务器不忙,并且总是有大量CPU和内存可用。

服务器配置: Amazon EC2实例-共享主机(32 CPU和60 GB RAM)。Web服务器-Apache。SSL-赛门铁克。


您是否尝试过使用弹性负载平衡器并让其处理HTTPS?那就是我在亚马逊上使用的,而且我还没有看到这样的性能问题。再说一次,我从未专门针对3G连接进行过测试。
Stephen Ostermiller

谢谢。服务器没有负载均衡。将再次在某些参数上测试服务器,然后将其试用。
User234334'Nov

Answers:


8

初始连接

您会发现初始连接包括协商SSL,因此,由于握手程度很高,这很好地表明您设置SSL的方式存在严重问题。

Google Chrome:了解资源计时

建立连接所花费的时间,包括TCP握手/重试和协商SSL。

SSL握手和TTFB

您有两个主要问题,完成SSL握手所花费的时间和等待TTFB的服务器(到第一个字节的时间)。

  • TTFB:4079ms(应小于1000ms)
  • SSL握手11830ms(应小于100ms)

还应该注意的是,在3G / 4G设备上进行测试时,由于电话信号的强度会发生变化,这可能会导致较长的首字节。这可能会导致间歇性的连接问题和延迟时间的变化。

步骤1:调查SSL问题

很明显,您遇到了严重的SSL问题,并且很可能是由于错误安装了OpenSSL或类似内容所致。首先使用SSL实验室测试您的SSL证书,然后更正所建议的任何问题或警告。

如果SSL仍然运行缓慢,则很可能是服务器过载或服务器故障。如果是较晚的,则您将需要尝试缩小故障原因。如果您在此问题上需要进一步的帮助,请使用服务器故障堆栈,一位用户报告说,创建新密钥可以解决他/她遇到的缓慢的SSL问题,该问题可能相关,也可能不相关。

负载平衡器可以帮助解决服务器资源问题。

步骤2:调查TTFB

一旦调查解决了SSL问题,并且TTFB仍然增加,则应通过确保服务器具有足够的资源来对其进行测试。

第一个字节时间受但不限于:

  • 从用户到托管服务器的数据中心的距离可以增加TTFB
  • 未缓存的GZIP可以增加TTFB
  • 网络拥塞会增加TTFB
  • 服务器拥塞会增加TTFB

有时增加CPU和RAM并非总是最佳选择。有时引入负载平衡器会更好,因为这不仅意味着您可以轻松并排运行多个服务器,而且实际上可以减轻缓存和SSL请求的负担。其他一些好处包括:

资源

  • 缓存:设备可以存储不变的内容(例如图像),并直接将其提供给客户端,而无需向网络服务器发送流量。
  • 压缩:通过在发送文件之前对其进行压缩来减少HTTP对象的通信量。
  • SSL卸载:在Web服务器的CPU上需要处理SSL流量,因此负载平衡器可以执行此处理。
  • 高可用性:万一发生故障,可以使用两台负载平衡设备。

降低TTFB的提示:


感谢您的详细说明。将根据建议的参数再次测试服务器,并将实现最佳性能!
2016年

问题中的图形将SSL握手与初始请求和TTFB分开。根据该图,问题实际上出在发出请求之前的SSL上。
斯蒂芬·奥斯特米勒

@StephenOstermiller很好地发现了。SSL超过11000ms时,等待的TTFB为4000ms。SSL可能会影响TTFB。我已经更新了问题以反映这一点。
西蒙·海特

谢谢!我在www.ssllabs.com上测试了我的SSL,等级为“ A”。没有警告/问题的报告。我发现Apache版本是2.2.15,已经过时了。需要立即更新。我的网站内容(以TB为单位)在/ var / www / html /中。更新/重新安装Apache是​​否会删除我的网站内容?有没有最安全的更新方法而不会丢失数据?
2016年

还有一点-OpenSSL也是最新版本。
2016年

6

阅读问题标题,您可以做两件事来加快初始连接和SSL / TLS握手的速度。这些功能适用于任何连接,而不仅仅是3G,因此无论如何您都应将它们用作最佳实践。

首先,使用HTTP / 2服务该站点。这需要Apache 2.4.17或更高版本

其次,配置Apache以使用OCSP装订。这需要Apache 2.3.3或更高版本以及OpenSSL 0.9.8h或更高版本,并在此处提供了很好的设置指南。OCSP装订不会加快速度,但是它将为客户端完成一些工作,并使他们免于尝试OCSP查找的麻烦。

阅读您的问题的正文,我认为您的托管环境存在更大的问题。这些加载时间是不可接受的。您提到这是“共享主机”,您应该联系管理该共享主机的任何人,并询问为什么他们的服务器速度如此之慢。尝试使用其他共享主机或自己运行VPS可能更好(这虽然工作量较大,但速度和灵活性更高)。

既然您已经在使用AWS,那么为什么不尝试使用他们的免费套餐进行测试并让您的服务器正常工作并进行优化呢?将其与子域和一些静态HTML页面一起使用以进行测试,然后将主站点移到上方(如果需要,可扩大到免费层的限制)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.