Java,.NET,PHP,Node.js和Python的最佳性能指标

没有应用是相同的。 一些旧版应用程序是在基于Java或.NET的同类语言构建的整体环境中构建的。 随着环境变得越来越分散,技术已经以近乎快的速度创新,应用程序体系结构倾向于使用多种语言来构建,这些语言通常针对特定用例利用更具动态性的语言。

幸运的是,在这些分布式且极其复杂的环境中,AppDynamics借助监控得以蓬勃发展。 AppDynamics支持Java,.NET,PHP,Node.js,Python,C / C ++以及它们的任意组合-适用于几乎任何环境。

与几位客户交谈并分析了他们的性能之后,我们针对每种语言编制了最常见的性能问题和性能指标的列表,以帮助评估应用程序的运行状况。

下面,我们汇总了我们的发现的简短摘要,并链接到相应的免费电子书中的完整分析。

Java仍然是企业应用程序中使用最广泛的技术语言之一。 但是,尽管它是如此普遍,但它是一种笨拙的旧语言,通常会遇到性能问题。

除了监视外部依赖项,垃圾回收以及采用可靠的缓存策略外,衡量业务交易也很重要。 我们将业务交易定义为任何最终用户与应用程序的交互。 这些可能包括向购物车中添加东西,登录或进行其他任何交互。 衡量这些事务的响应时间以充分了解您的用户体验至关重要。 如果响应时间花费的时间超过正常时间,则必须尽快解决此问题,以保持最佳的用户体验,这一点很重要。

wkpqintaryhft3sxzwwxgdnazsk4xmryccihhomgajvxaievbf9bnffrnlgqevapgrixb8obmu2asw80ht2bpltzlhewuwlsyfvvycyhjm-pdf1-ghxxpjnnn3athsul0pb7gwsl

此处阅读完整的电子书, Java性能指标排名前五的技巧和窍门

在您的应用程序代码中有时需要确保一次只有一个线程可以执行一部分代码。 示例包括访问共享软件资源(例如,单线程规则执行组件)和共享基础结构资源(例如,文件句柄或网络连接)。 .NET框架提供了不同类型的同步策略,包括锁/监视器,进程间互斥锁和专用锁,例如Reader / Writer锁。

无论为什么要同步代码或选择同步代码的机制如何,都存在一个问题:代码的一部分只能一次由一个线程执行。

除了同步和锁定外,请确保测量过多或不必要的日志记录,代码依赖性以及基础数据库和基础结构问题。

t2tcjz04xvitt3bz7gt7vbmhzukuv-wxtqtbiooryyxfrg_htbydv1aritgfvgofiifm9mlgpvjs1gnl2xkttmcspkx5r7khtqu7qwwiomiibpyk9ww72cdiggraawn1ly5o4yp6

此处阅读完整的电子书, .NET性能指标排名前五的技巧和窍门

您的PHP应用程序可能正在利用后端数据库,缓存层甚至队列服务器,因为它将I / O密集型阻塞任务卸载到工作服务器上以在后台进行处理。 无论您的PHP应用程序与后端连接什么,这些后端服务的延迟都会影响PHP应用程序性能。 内部退出呼叫的各种类型可能包括:

  • SQL数据库
  • NoSQL服务器
  • 内存缓存
  • 内部服务
  • 队列服务器

在某些环境中,您的PHP应用程序可能与晦涩的后端或消息传递/队列服务器接口。 例如,您可能有一个旧的消息代理,它充当PHP应用程序与其他应用程序之间的接口。 尽管此消息代理可能已过时,但它仍然是旧体系结构的一部分,并且是与分布式应用程序进行通信的生态系统的一部分。

除了监视内部依赖关系之外,请确保您测量业务事务响应时间(如上所述),外部调用,并具有最佳的缓存策略,并且可以完全了解应用程序的拓扑。

此处阅读完整的电子书, 《 PHP性能指标排名前5位》,技巧和窍门

为了了解收集围绕Node.js事件循环行为的度量标准,它有助于首先了解事件循环的实际含义以及它可能如何影响应用程序性能。 为了便于说明,您可以将事件循环视为执行队列中代码的无限循环。 对于无限循环内的每次迭代,事件循环执行一块同步代码。 然后,Node.js(处于单线程且非阻塞状态)将拾取下一个代码块或滴答声,等待队列继续执行更多代码。 尽管这是一个非阻塞模型,但可能被视为阻塞的各种事件包括:

  • 访问磁盘上的文件
  • 查询数据库
  • 从远程Web服务请求数据

使用Javascript(Node.js的语言),您可以利用回调来执行所有I / O操作。 这提供了一个优点,即当I / O在后台执行时,执行流可以继续执行其他代码。 Node.js将执行事件队列中等待的代码,在可用线程池中的线程上执行它,然后继续执行队列中的下一个代码。 您的代码完成后,它将立即返回,并指示回调函数在最终完成整个事务时执行其他代码。

除了事件循环外,请确保监视外部依赖项,内存泄漏,业务事务响应时间,并完整,完整地查看您的应用程序拓扑。

此处阅读完整的电子书, 前5个Node.js性能指标,技巧和窍门

从内存中服务对象总是比通过网络调用从数据库等系统中检索对象要快。 高速缓存提供了一种在本地存储对象实例的机制,以避免这种网络往返。 但是,如果配置不正确,则缓存可能会带来自身的性能挑战。 常见的缓存问题包括:

  • 将太多数据加载到缓存中
  • 缓存大小不正确

在测量高速缓存的性能时,需要确定加载到高速缓存中的对象数,然后跟踪正在使用的那些对象的百分比。 要查看的关键指标是缓存命中率和从缓存中弹出的对象数。 高速缓存命中计数或命中率报告从高速缓存处理的对象请求的数量,而不需要进行网络行程来检索对象。 如果高速缓存很大,则命中率很小(低于10%或20%),并且您看不到从高速缓存中弹出许多对象,那么这表明您正在向高速缓存中加载过多数据。 换句话说,您的缓存足够大,不会抖动(请参阅下文),并且包含许多未使用的数据。

除了评估缓存之外,还监视外部调用,应用程序可见性和内部依赖性。

tstb9oky9wiwvo6pml4isvegi21cz7fpqtb61zkhcxomjh9qobyu2iekbghrfli90arp2w3hvypo-bfytluwzle9l1-ndyn9nuj7zv-x72ixdm24awhyds84oyteylxwui4bwtjk

除了评估缓存外,还监视外部调用,应用程序可见性和内部依赖性。

此处阅读完整的电子书, 《 Python 5最佳性能指标,技巧和窍门》

回顾一下,如果您想阅读我们特定于语言的最佳实践,请单击以下链接之一:

翻译自: https://www.javacodegeeks.com/2016/05/top-performance-metrics-java-net-php-node-js-python.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值