机房360首页
当前位置:首页 » 技术前沿 » 常见的绩效管理错误

常见的绩效管理错误

来源:机房360 作者:Harris编译 更新时间:2022/1/5 7:25:39

摘要:在本文中,我们将讨论分布式基于云的架构中常见的性能错误和反模式。我们还将介绍重载应用程序清单。

   在本文中,我们将讨论分布式基于云的架构中常见的性能错误和反模式。我们还将介绍重载应用程序清单。
    
  任何云分布式应用程序的性能都是成功用户体验的关键。因此,深入了解如何衡量性能以及使用什么度量IO模式非常重要。在本文中,我们将介绍以下内容:
  
  •绩效分析清单和策略
  
  •性能问题检测和工具
  
  •性能反模式以及如何缓解问题
  
  云清单中的性能监控
  
  在提高应用程序或基础架构架构的性能时,请使用以下清单:
  
  •在您的应用程序和基础设施组件中引入日志工具
  
  •查找代码和基础架构的反模式和瓶颈
  
  •设置监控工具以收集CPU、内存和存储利用率
  
  •调整监控工具以收集基本组件之间的事件信息
  
  •不要记录一切——确定要记录的重要事件
  
  最常见的应用程序性能反模式
  
  性能检查表中最重要的一项是识别反模式。一旦您已经知道弱点,这将节省宝贵的时间。
  
  爱管闲事的邻居
  
  假设您有一个部署为Docker容器的微服务,它比其他容器消耗更多的CPU和内存。这可能会导致中断,因为其他服务可能无法获得足够的资源。例如,如果您使用Kubernetes,它可能会杀死其他容器以释放一些资源。您可以通过在设计和实施阶段的最初阶段设置CPU和内存限制来轻松解决此问题。
  
  无缓存
  
  一些倾向于在高负载下工作的应用程序不包含任何缓存机制。这可能会导致获取相同的数据并过度使用主数据库。您可以通过在应用程序中引入缓存层来解决此问题,它可以基于Redis缓存或仅基于内存缓存模块。当然,你不需要到处使用缓存,因为这可能会导致数据不一致。有时,您可以通过简单地向代码添加输出缓存来提高性能。
  
  已将输出缓存属性添加到MVC应用程序。它将缓存静态内容60秒。
  
  繁忙的数据库
  
  当所有服务都在Kubernetes集群中并通过容器部署但它们都使用单个数据库实例时,这个问题经常出现在现代微服务架构中。您可以通过确定每个微服务的数据范围并将一个数据库拆分为多个来解决此问题。您还可以使用数据库池机制。例如,Azure提供AzureSQL弹性池服务。
  
  重试风暴
  
  重试风暴及其引起的问题通常发生在微服务或云分布式应用程序中;当某个组件或服务离线时,其他服务会尝试访问它。这通常会导致永无止境的重试循环。但是,它可以通过使用断路器模式来修复。断路器的想法来自无线电电子学。它可以作为一个单独的组件来实现,就像一个自动开关。当电路遇到问题(如短路)时,开关会关闭电路。
  
  示例:导致中断的云性能监控架构
  
  要检查架构的性能,需要对应用程序运行负载测试。在下面,您可以看到一个基于Azure应用服务和Azure函数的架构示例。该架构包含以下组件:
  
  •分为四个阶段:开发、测试、登台和生产。
  
  •登录和监控是通过Prometheus和Grafana实现的
  
  •加载测试是通过AzureDevOps和JMeter实现的
  
  解决问题
  
  正如您在图中所见,乍一看,一切都很好。你认为哪里可能有问题?您可以在图2中看到该图的固定架构。
  
  首先,永远不应该针对生产阶段运行负载测试,因为当您运行过度负载测试时,它可能(并且经常会)导致停机。相反,您应该针对测试或暂存环境运行测试。
  
  您还可以为负载测试目的明确创建生产环境的副本。在这种情况下,您不应使用真实的生产数据,因为这可能会导致向真实客户发送电子邮件!
  
  接下来,让我们看一个应该在高负载下构建的应用程序。
  
  示例:AKS上的高负载应用程序架构
  
  想象一下,我们有一个流行的电子商务应用程序需要在黑色星期五生存。
  
  应用程序架构应基于以下组件:
  
  •带有KubernetesClusterAutoscaler的AzureKubernetes服务(AKS)被用作主要的分布式环境和机制,以在负载下扩展计算能力。
  
  •Istio的服务网格用于提高集群可观察性、流量管理和负载平衡。
  
  •AzureLogAnalytics和Azure门户仪表板用作中央日
  
  在上图中,您可以看到AKS群集包含在后台表示为虚拟机的节点。Autoscaler是这里的主要组件。当集群处于高负载时,它会增加节点数。当集群处于正常负载时,它还会将节点缩小到标准大小。
  
  Istio提供数据平面和控制平面,协助完成以下工作:
  
  •负载均衡
  
  •TLS终止
  
  •服务发现
  
  •健康检查
  
  •身份和访问管理
  
  •配置管理
  
  •监控、日志和流量控制
  
  请注意,该架构当然包括Dev、Test、Staging和Production阶段。高可用Kubernetes集群的公式是每个阶段都有单独的集群。但是,对于Dev和Test,您可以使用由命名空间分隔的单个集群来降低基础架构成本。
  
  为了进一步加强日志记录,我们使用AzureLogAnalytics代理和门户来创建仪表板。Istio包含许多现有的指标,包括性能指标和自定义它们的选项。然后,您可以与Grafana仪表板集成。
  
  最后,还可以使用Istio设置负载测试。这是一个很好的例子。
  
  顶级开源应用程序监控工具
  
  让我们首先列出一些最流行的开源应用程序性能工具:
  
  •ApacheSkyWalking是一个强大的分布式性能和日志分析平台。它可以监控用.NETCore、Java、PHP、Node.js、Golang、LUA、C++和Python编写的应用程序。它支持云集成并包含性能优化、慢速服务和端点检测、服务拓扑图分析等功能。请参阅下图中的特征图:
  
  •Scouter是一个强大的工具,可以监控Redis、Nginx、Kafka、MongoDB、Kubernetes和其他来源。它可以监控CPU、内存网络和堆利用率、活跃用户、活跃服务等。
  
  •GoappMonotr是一个为Golang应用程序提供性能监控的工具。
  
  •Pinpoint是用于Python、Java和PHP应用程序的性能监控工具。它可以监控CPU、内存和存储利用率。您可以将其集成到您的项目中,而无需更改任何一行代码。
  
  •CodeSpeed是一个简单的APM工具。它可以安装到您的Python应用程序中以监控和分析代码的性能。
  
  有像Datadog这样的工具有社区许可证或试用版。此外,如果您使用的是Azure,则可以根据带宽以低成本或完全免费启用AzureAppInsights。
  
  结论
  
  在本文中,我们深入研究了使用分布式基于云的架构时常见的性能错误和反模式,并介绍了在构建将面临繁重负载的应用程序时要考虑的清单。此外,我们探索了可以帮助进行性能分析的开源工具,尤其是对于预算有限的项目。而且,当然,我们已经介绍了一些高性能应用程序和可能存在性能问题的应用程序的示例,以便亲爱的读者,您可以避免云架构中的这些常见性能错误。
  
  编辑:Harris

机房360微信公众号订阅
扫一扫,订阅更多数据中心资讯

本文地址:http://www.jifang360.com/news/202215/n6850142713.html 网友评论: 阅读次数:
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
  • 上一篇:2021年8大IT灾难
  • 相关评论
    正在加载评论列表...
    评论表单加载中...
    • 我要分享
    推荐图片