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



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

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

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

服务器配置:
Amazon EC2实例-共享托管(32 CPU和60 GB RAM)。
Web服务器-Apache。
SSL-Symantec。

评论

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

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

#1 楼

初始连接

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


Google Chrome:了解资源计时

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


SSL握手和TTFB

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


TTFB:4079毫秒(应小于1000毫秒)
SSL握手11830毫秒(应小于100毫秒)

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

步骤1:研究SSL问题

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

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

加载平衡器可以解决服务器资源问题。

第2步:调查TTFB

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

首字节时间受(但不限于)以下影响:


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

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


SOURCE


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



降低TTFB的提示:


确保您的数据库位于同一网络或优质的SQL云上。
确保从内存中读取数据库,并且永远不要交换文件!
使用内容传送网络可减轻负载服务器请求和压缩任务。
利用Varnish Cache通过缓存页面来减少数据库负载
使用HDParm在硬盘上对静态文件进行基准测试

使用以下方法对服务器进行基准测试Apache HTTP服务器基准测试工具

使用WebPageTest使用10个通行证以及多个远程位置对网站进行基准测试



评论


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

–User234334
16年11月5日,12:23

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

–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
16年11月5日,12:53

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

–西蒙·海特(Simon Hayter)♦
16年11月5日在16:09

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

–User234334
16年11月5日,19:55

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

–User234334
16年11月5日在20:15

#2 楼

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

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

其次,将Apache配置为使用OCSP装订。这需要Apache 2.3.3或更高版本以及OpenSSL 0.9.8h或更高版本,并在此处进行了很好的设置。 OCSP装订不会加快速度,但是它将为客户端完成一些工作,并使他们免于尝试OCSP查找的麻烦。您的托管环境有一个更大的问题。这些加载时间是不可接受的。您提到这是“共享主机”,您应该联系管理该共享主机的任何人,并询问为什么他们的服务器速度如此之慢。尝试使用其他共享主机或自己运行VPS可能更好(这是更多工作,但可以提供更好的速度和灵活性)。

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