开发者社区> 问答> 正文

我要对Linux服务器进行调优,求一个应用程序瓶颈分析的思路?

我要对Linux服务器进行调优,求一个应用程序瓶颈分析的思路?

展开
收起
我是小美女 2021-11-01 14:38:28 838 0
2 条回答
写回答
取消 提交回答
  • 首先要有压力应用才会有瓶颈,所以要先压测,要测出应用的瓶颈,应用本身上下游不能成为瓶颈,例如,压力端不能因为造过大压力本身不行了,连接的MySQL不能因为过多的数据量或频繁连接操作等成为瓶颈,上下游搞定后,那么应用当前的资源环境,例如CPU,内存等,在这个基础上,应用是否满足你的性能指标

    2021-11-03 07:48:51
    赞同 展开评论 打赏
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,这些应用程序性能问题虽然各种各样,但就其本质来源,实际上只有三种,也就是资源瓶颈、依赖服务瓶颈以及应用自身的瓶颈。

    第一种资源瓶颈,其实还是指刚才提到的 CPU、内存、磁盘和文件系统 I/O、网络以及内核资源等各类软硬件资源出现了瓶颈,从而导致应用程序的运行受限。对于这种情况,我们就可以用前 面系统资源瓶颈模块提到的各种方法来分析。

    第二种依赖服务的瓶颈,也就是诸如数据库、分布式缓存、中间件等应用程序,直接或者间接调用的服务出现了性能问题,从而导致应用程序的响应变慢,或者错误率升高。这说白了就是跨应 用的性能问题,使用全链路跟踪系统,就可以帮你快速定位这类问题的根源。

    最后一种,应用程序自身的性能问题,包括了多线程处理不当、死锁、业务算法的复杂度过高等等。对于这类问题,在我们前面讲过的应用程序指标监控以及日志监控中,观察关键环节的耗时 和内部执行过程中的错误,就可以帮你缩小问题的范围。

    不过,由于这是应用程序内部的状态,外部通常不能直接获取详细的性能数据,所以就需要应用程序在设计和开发时,就提供出这些指标,以便监控系统可以了解应用程序的内部运行状态。

    如果这些手段过后还是无法找出瓶颈,你还可以用系统资源模块提到的各类进程分析工具,来进行分析定位。比如:

    你可以用 strace,观察系统调用;
    使用 perf 和火焰图,分析热点函数;
    甚至使用动态追踪技术,来分析进程的执行状态。
    
    

    当然,系统资源和应用程序本来就是相互影响、相辅相成的一个整体。实际上,很多资源瓶颈,也是应用程序自身运行导致的。比如,进程的内存泄漏,会导致系统内存不足;进程过多的 I/O 请求,会拖慢整个系统的 I/O 请求等。

    所以,很多情况下,资源瓶颈和应用自身瓶颈,其实都是同一个问题导致的,并不需要我们重复分析。

    2021-11-01 14:44:55
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载