如何整理过载的服务器?

我们今天发布的翻译材料专门致力于发现服务器性能的瓶颈,解决问题,提高系统性能并防止性能下降。在解决服务器超载问题的方法中,建议采取以下四个步骤:

  1. 评估情况:确定服务器性能的瓶颈。
  2. 稳定服务器:应用紧急措施来改善情况。
  3. 系统改进:扩展和优化系统功能。
  4. 服务器监视:使用自动化工具来防止出现问题。



1.评估情况


当流量使服务器超载时,处理器,网络,内存和磁盘I / O可能成为性能瓶颈。确定到底是什么原因导致了问题,您可以专注于最重要的问题。考虑最重要的服务器子系统的分析功能。

  • . , 80%, , . , 80-90%. 100%, . , , . , , , «» . , , , , .
  • . , , , , . , -, , . , , .
  • . , . , . . , (Out Of Memory, OOM). , , , .
  • /. , , , , . , , , (, ). — , .

我们下面将讨论的目标是解决处理器和网络的问题。事实是,大多数项目在交通高峰期都会遭受此类问题的困扰。

您可以使用top命令开始对服务器问题进行故障排除如果有这样的机会,您可以在这里求助于托管服务提供商的历史数据和监视系统收集的数据。

2.服务器稳定


系统中的服务器过载会迅速导致系统其他部分的级联故障因此,重要的是,在服务器过载后,稳定它,然后调查情况,以对系统进行一些重大改进。

▍限制查询处理速度


限制处理请求的速度可以通过限制传入请求的数量来保护基础结构。当服务器性能下降时,这非常重要。随着服务器响应时间的增加,用户倾向于积极刷新页面,这进一步增加了服务器负载。

尽管拒绝处理请求是一种简单而有效的措施,但是最好通过使用某些外部系统限制请求数量来减少服务器上的负载。例如,这可以是负载平衡器,反向代理服务器或CDN。以下是有关使用几种此类系统的说明的链接:


这是有关使用各种方法来限制请求处理速度来减轻服务器负载的材料。

▍HTTP缓存


寻找改善内容缓存的方法。如果可以从HTTP缓存(从浏览器缓存或CDN)将资源提供给用户,则不需要从服务器请求资源,这可以减轻服务器的负载。

诸如Cache-ControlExpiresETag之类的HTTP标头指示应如何缓存特定资源。审计和更正这些标头可以帮助改善缓存。

尽管您可以利用服务人员的缓存功能,但他们使用单独的缓存这是对核心浏览器缓存系统的帮助,而不是其替代品。因此,在解决服务器过载的问题时,应将精力集中在优化HTTP缓存上。

诊断程序


启动Lighthouse使用高效的缓存策略度量标准来查看Serve静态资产,以查看具有中短缓存时间(生存时间,TTL)的资源列表查看列出的资源,并考虑增加其TTL。这是适用于各种资源的估计缓存条款。

  • 静态资源需要缓存很长一段时间(1年)。
  • 动态资源需要缓存一小段时间(3小时)。

缓存设置


有必要将必要的缓存缓存时间(以秒表示)写入Cache-Controlmax-age标头指令以下是在不同系统上设置此标头的说明:


请注意,该指令max-age只是影响缓存的许多指令之一。还有其他指令和其他标头会影响缓存功能。为了更好地理解此问题,建议您阅读 HTTP缓存指南。

system系统功能逐渐降低


逐渐减少系统功能是一种临时限制功能的策略,旨在消除服务器上的过多负载。该概念可以以多种不同方式应用。例如,为客户提供静态文本页面而不是功能完善的应用程序,禁用搜索或返回比平常更少的搜索结果。这包括禁用不影响其基本功能的项目的资源密集型功能。这里应主要注意禁用该功能,可以放弃该功能而不会过多影响应用程序的主要功能。

3.系统改进


▍使用CDN


服务静态资源的任务可以从服务器转移到内容分发网络(CDN)。这将减少服务器上的负载。

CDN的主要功能是通过使用位于用户附近的大型服务器网络将材料快速交付给用户。此外,某些CDN还提供其他与性能相关的功能。其中-数据压缩,负载平衡,媒体文件优化。

CDN设定


如果拥有该网络的公司拥有分布在世界各地的大量服务器,则CDN的优势就会显现出来。因此,支持自己的CDN服务几乎没有任何意义。典型的CDN设置是一个相当快速的过程,大约需要半小时。它包括更新DNS记录,以便它们指向CDN。

CDN优化:案例研究


为了标识未使用CDN服务的资源(但应该将其发布给具有CDN的用户),可以使用WebPageTest在结果页面上,单击标记为的矩形,Effective use of CDN然后查看CDN应该提供的资源列表。


WebPageTest结果

解决问题


如果没有使用CDN缓存资源,请确定是否满足以下条件:


▍扩展计算资源


扩展计算资源的决定应谨慎进行。尽管通常可以通过缩放来解决某些问题,但这样做是不合时宜的,但有可能使系统不必要地复杂化,并不合理地增加了其支持成本。

诊断程序


到第一个字节的时间Time To First Byte,TTFB)的高指示符可能表示服务器已接近其极限。您可以 Lighthouse报告的“ 减少服务器响应时间(TTFB)”部分中找到TTFB信息

为了更深入地研究这种情况,您需要使用一些监视工具并分析处理器使用情况。如果当前或预测的处理器负载值超过80%-这意味着您需要考虑增加服务器容量。

解决问题


在系统中添加负载均衡器可以使您在多台服务器之间分配流量。负载均衡器位于服务器池的前面,并将流量分配到适当的服务器。云提供商为用户提供了负载均衡器(GCPAWSAzure),但是您也可以通过HAProxyNGINX使用自己的均衡器。负载平衡器准备好工作之后,可以将其他服务器添加到系统中。

除了负载平衡外,大多数云提供商还提供自动扩展计算能力(GCPAWSAzure)。自动缩放与负载平衡相关联。即,通过在高负载时间自动缩放资源,分配了其他资源,并且在低负载期间禁用了不必要的资源。但是,即使考虑到这一点,也应注意,自动缩放也不是通用的解决方案。自动启动服务器需要花费时间。自动缩放配置需要认真的配置。因此,在应用复杂的自动缩放系统之前,值得尝试使用负载均衡器进行相对简单的配置。

data使用数据压缩


文本资源必须使用gzip或brotli算法进行压缩。在某些情况下,压缩可以帮助将此类资源的大小减少约70%。

诊断程序


要查找需要压缩的资源,可以使用Lighthouse报告中Enable text compression指示器

解决问题


要启用压缩,您需要编辑服务器设置。这是有关此的详细信息:


▍优化图像和其他媒体材料


图像上,大多数网站上的大量材料掉落了。图像优化可以显着减少站点材料的大小。而且,这样的优化执行得非常快。

诊断程序


Lighthouse报告中有各种指示符,用于指示潜在的图像优化选项。要搜索需要优化的大图像,可以使用常规的浏览器开发人员工具。这样的图像很可能成为优化的良好候选者。

这是LightHouse报告指标的列表,在探索图像优化的可能性时应注意:


如果您使用Chrome的开发者工具来帮助优化图片,则可以按照以下步骤操作:

  • 记录页面网络活动。
  • 单击Img过滤非图像资源。
  • 单击列Size以按大小对图像文件进行排序。

解决问题


首先,让我们谈谈如果时间不多该怎么办。

在这种情况下,您应该注意大图像,以及下载频率比其他图像高的图像。找到它们之后,必须使用Squoosh之类的工具对其进行手动优化大照片通常是优化的理想选择。例如,取自诸如Hero Images之类的资源

优化图像时,您需要注意以下几点:

  • 大小:图像不应大于所需的大小。
  • : , 80-85 , 30-40% .
  • : JPEG, PNG. MP4, GIF.

现在,为那些有更多时间的人介绍如何进行图像优化。

如果图片占网站材料的大部分,请考虑使用专门的CDN服务,该服务旨在处理图片以进行维护。此类服务使您可以减轻使用主服务器中图像的负担。设置项目以使用此类CDN服务很简单,但是它需要更新现有的映像链接,以便它们指向CDN资源。这是有关为图像设计的专用CDN服务的使用材料。

▍JavaScript和CSS的缩小


代码最小化允许您通过删除不必要的字符来减小其大小。

诊断程序


Lighthouse报告中 查看Minify CSSMinify JavaScript指标,以识别需要缩小的资源。

解决问题


如果您没有太多时间,请着重减少JavaScript代码。在大多数网站上,JavaScript代码的数量超过CSS代码的数量,因此此举将带来更好的结果。这是有关缩小JavaScript的内容,是有关缩小CSS的内容。

4.服务器监控


服务器监视工具支持使用控制面板进行数据收集和可视化。他们可以通知用户与服务器性能有关的各种事件。使用这些工具可以帮助预防和缓解服务器性能问题。

设置监视系统时,应努力实现最大程度的简化。过多的数据收集和过于频繁的通知会导致负面影响。收集的数据范围越广,收集的频率越多,收集和存储数据的成本就越高。如果负责服务器状态的人员被有关次要事件的消息轰炸,那么他将因此而忽略这些消息。

通知应包含能够一致且准确地描述问题的指标。例如,服务器响应时间(延迟)对此特别有用:它使您能够识别大量问题情况,并且与用户对服务器的感知方式直接相关。基于低级度量标准(例如处理器利用率水平)的通知可以起到有用的附加组件的作用,但是它们只能指示一小部分可能的问题。此外,通知不应基于平均指标,而应基于与95%至99%百分位数相对应的指标。否则,分析平均值很容易导致跳过不影响所有用户的问题。

监控设置


所有主要的云提供商都为客户提供了自己的监视工具(GCPAWSAzure)。此外,在可以注意到Netdata工具-优秀的免费开源替代提供程序工具的工具。无论使用什么功能,都需要在要监视的每台服务器上安装代理应用程序。完成系统设置后,请确保设置通知。以下是设置不同监视工具的说明:


摘要


今天,我们讨论了如何识别和修复服务器性能问题。我想相信您的服务器将稳定运行,并且本材料中的建议对您没有用。如果出现问题-我们希望您在这里找到可以帮助您尽快解决问题的内容。

亲爱的读者们!在运行项目的服务器开始变慢的情况下,您该怎么办?


All Articles