网站开发的试用期条款疏肝益阳胶囊有哪些功效与作用

news/2025/9/29 17:07:01/文章来源:
网站开发的试用期条款,疏肝益阳胶囊有哪些功效与作用,哪有定制开发,视频网站开发研究背景阿里妹导读#xff1a;日常工作中#xff0c;我们多少都会遇到应用的性能问题。在阿里面试中#xff0c;性能优化也是常被问到的题目#xff0c;用来考察是否有实际的线上问题处理经验。面对这类问题#xff0c;阿里工程师齐光给出了详细流程。来阿里面试前#xff0c;先… 阿里妹导读日常工作中我们多少都会遇到应用的性能问题。在阿里面试中性能优化也是常被问到的题目用来考察是否有实际的线上问题处理经验。面对这类问题阿里工程师齐光给出了详细流程。来阿里面试前先看看这篇文章哦。 性能问题和Bug不同后者的分析和解决思路更清晰很多时候从应用日志文中的应用指分布式服务下的单个节点即可直接找到问题根源而性能问题其排查思路更为复杂一些。 对应用进行性能优化是一个系统性的工程对工程师的技术广度和技术深度都有所要求。一个简单的应用它不仅包含了应用代码本身还和容器虚拟机、操作系统、存储、网络、文件系统等紧密相关线上应用一旦出现了性能问题需要我们从多方面去考虑。 与此同时除了一些低级的代码逻辑引发的性能问题外很多性能问题隐藏的较深排查起来会比较困难需要我们对应用的各个子模块、应用所使用的框架和组件的原理有所了解同时掌握一定的性能优化工具和经验。 本文总结了我们在进行性能优化时常用的一些工具及技巧目的是希望通过一个全面的视角去感知性能优化的整体脉络。本文主要分为下面三个部分 第一部分会介绍性能优化的一些背景知识。第二部分会介绍性能优化的通用流程以及常见的一些误区。第三部分会从系统层和业务层的角度介绍高效的性能问题定位工具和高频性能瓶颈点分布。 本文中提到的线程、堆、垃圾回收等名词如无特别说明指的是 Java 应用中的相关概念。 1.性能优化的背景 前面提到过应用出现性能问题和应用存在缺陷是不一样的后者大多数是由于代码的质量问题导致会导致应用功能性的缺失或出现风险一经发现会被及时修复。而性能问题可能是由多方面的因素共同作用的结果代码质量一般、业务发展太快、应用架构设计不合理等这些问题处理起来一般耗时较长、分析链路复杂大家都不愿意干因此可能会被一些临时性的补救手段所掩盖如系统水位高或者单机的线程池队列爆炸那就集群扩容增加机器内存占用高/高峰时段 OOM那就重启分分钟解决...... 临时性的补救措施只是在给应用埋雷同时也只能解决部分问题。譬如在很多场景下加机器也并不能解决应用的性能问题如对时延比较敏感的一些应用必须把单机的性能优化到极致与此同时加机器这种方式也造成了资源的浪费长期来看是得不偿失的。对应用进行合理的性能优化可在应用稳定性、成本核算获得很大的收益。 上面我们阐述了进行性能优化的必要性。假设现在我们的应用已经有了性能问题eg. CPU 水位比较高准备开始进行优化工作了在这个过程中潜在的痛点会有哪些呢下面列出一些较为常见的 对性能优化的流程不是很清晰。初步定为一个疑似瓶颈点后就兴高采烈地吭哧吭哧开始干最终解决的问题其实只是一个浅层次的性能瓶颈真实的问题的根源并未触达对性能瓶颈点的分析思路不是很清晰。CPU、网络、内存......这么多的性能指标我到底该关注什么应该从哪一块儿开始入手对性能优化的工具不了解。遇到问题后不清楚该用哪个工具不知道通过工具得到的指标代表什么。 2.性能优化的流程 在性能优化这个领域并没有一个严格的流程定义但是对于绝大多数的优化场景我们可以将其过程抽象为下面四个步骤。 准备阶段主要工作是是通过性能测试了解应用的概况、瓶颈的大概方向明确优化目标分析阶段通过各种工具或手段初步定位性能瓶颈点调优阶段根据定位到的瓶颈点进行应用性能调优测试阶段让调优过的应用进行性能测试与准备阶段的各项指标进行对比观测其是否符合预期如果瓶颈点没有消除或者性能指标不符合预期则重复步骤2和3。 下图即为上述四个阶段的简要流程。 2.1 通用流程详解 在上述通用流程的四个步骤当中步骤2和3我们会在接下来两个部分重点进行介绍。首先我们来看一下在准备阶段和测试阶段我们需要做一些什么。 | 2.1.1 准备阶段 准备阶段是非常关键的一步不能省略。 首先需要对我们进行调优的对象进行详尽的了解所谓知己知彼百战不殆。 对性能问题进行粗略评估过滤一些因为低级的业务逻辑导致的性能问题。譬如线上应用日志级别不合理可能会在大流量时导致 CPU 和磁盘的负载飙高这种情况调整日志级别即可了解应用的的总体架构比如应用的外部依赖和核心接口有哪些使用了哪些组件和框架哪些接口、模块的使用率较高上下游的数据链路是怎么样的等了解应用对应的服务器信息如服务器所在的集群信息、服务器的 CPU/内存信息、安装的 Linux 版本信息、服务器是容器还是虚拟机、所在宿主机混部后是否对当前应用有干扰等 其次我们需要获取基准数据然后结合基准数据和当前的一些业务指标确定此次性能优化的最终目标。 使用基准测试工具获取系统细粒度指标。可以使用若干 Linux 基准测试工具eg. jmeter、ab、loadrunnerwrk、wrk等得到文件系统、磁盘 I/O、网络等的性能报告。除此之外类似 GC、Web 服务器、网卡流量等信息如有必要也是需要了解记录的通过压测工具或者压测平台如果有的话对应用进行压力测试获取当前应用的宏观业务指标譬如响应时间、吞吐量、TPS、QPS、消费速率对于有 MQ 的应用等。压力测试也可以省略可以结合当前的实际业务和过往的监控数据去统计当前的一些核心业务指标如午高峰的服务 TPS。 | 2.1.2 测试阶段 进入到这一阶段说明我们已经初步确定了应用性能瓶颈的所在而且已经进行初步的调优了。检测我们调优是否有效的方式就是在仿真的条件下对应用进行压力测试。注意由于 Java 有 JITjust-in-time compilation过程因此压力测试时可能需要进行前期预热。 如果压力测试的结果符合了预期的调优目标或者与基准数据相比有很大的改善则我们可以继续通过工具定位下一个瓶颈点否则则需要暂时排除这个瓶颈点继续寻找下一个变量。 2.2 注意事项 在进行性能优化时了解下面这些注意事项可以让我们少走一些弯路。 性能瓶颈点通常呈现 2/8 分布即80%的性能问题通常是由20%的性能瓶颈点导致的2/8 原则也意味着并不是所有的性能问题都值得去优化性能优化是一个渐进、迭代的过程需要逐步、动态地进行。记录基准后每次改变一个变量引入多个变量会给我们的观测、优化过程造成干扰不要过度追求应用的单机性能如果单机表现良好则应该从系统架构的角度去思考; 不要过度追求单一维度上的极致优化如过度追求 CPU 的性能而忽略了内存方面的瓶颈选择合适的性能优化工具可以使得性能优化取得事半功倍的效果整个应用的优化应该与线上系统隔离新的代码上线应该有降级方案。 3.瓶颈点分析工具箱 性能优化其实就是找出应用存在性能瓶颈点然后设法通过一些调优手段去缓解。性能瓶颈点的定位是较困难的快速、直接地定位到瓶颈点需要具备下面两个条件 恰到好处的工具一定的性能优化经验。 工欲善其事必先利其器我们该如何选择合适的工具呢不同的优化场景下又该选择那些工具呢 首选我们来看一下大名鼎鼎的「性能工具(Linux Performance Tools-full)图」想必很多工程师都知道它出自系统性能专家 Brendan Gregg。该图从 Linux 内核的各个子系统出发列出了我们在对各个子系统进行性能分析时可使用的工具涵盖了监测、分析、调优等性能优化的方方面面。除了这张全景图之外Brendan Gregg 还单独提供了基准测试工具(Linux Performance Benchmark Tools)图、性能监测工具(Linux Performance Observability Tools)图等更详细的内容请参考 Brendan Gregg 的网站说明。 上面这张图非常经典是我们做性能优化时非常好的参考资料但事实上我们在实际运用的时候会发现可能它并不是最合适的原因主要有下面两点 1对分析经验要求较高。上面这张图其实是从 Linux 系统资源的角度去观测性能指标的这要求我们对 Linux 各个子系统的功能、原理要有所了解。举例遇到性能问题了我们不会拿每个子系统下的工具都去试一遍大多数情况是我们怀疑某个子系统有问题然后根据这张图上列举的工具去观测或者验证我们的猜想这无疑拔高了对性能优化经验的要求 2适用性和完整性不是很好。我们在分析性能问题时从系统底层自底向上地分析是较低效的大多数时候从应用层面去分析会更加有效。性能工具(Linux Performance Tools-full)图只是从系统层一个角度给出了工具集如果从应用层开始分析我们可以使用哪些工具哪些点是我们首先需要关注的 鉴于上面若干痛点下面给出了一张更为实用的「性能优化工具图谱」该图分别从系统层、应用层含组件层的角度出发列举了我们在分析性能问题时首先需要关注的各项指标其中?标注的是最需要关注的这些点是最有可能出现性能瓶颈的地方。需要注意的是一些低频的指标或工具在图中并没有列出来如 CPU 中断、索引节点使用、I/O事件跟踪等这些低频点的排查思路较复杂一般遇到的机会也不多在这里我们聚焦最常见的一些就可以了。 对比上面的性能工具(Linux Performance Tools-full)图下图的优势在于把具体的工具同性能指标结合了起来同时从不同的层次去描述了性能瓶颈点的分布实用性和可操作性更强一些。系统层的工具分为CPU、内存、磁盘含文件系统、网络四个部分工具集同性能工具(Linux Performance Tools-full)图中的工具基本一致。组件层和应用层中的工具构成为JDK 提供的一些工具 Trace 工具 dump 分析工具 Profiling 工具等。 这里就不具体介绍这些工具的具体用法了我们可以使用 man 命令得到工具详尽的使用说明除此之外还有另外一个查询命令手册的方法info。info 可以理解为 man 的详细版本如果 man 的输出不太好理解可以去参考 info 文档命令太多记不住也没必要记住。 上面这张图该如何使用 首先虽然从系统、组件、应用两个三个角度去描述瓶颈点的分布但在实际运行时这三者往往是相辅相成、相互影响的。系统是为应用提供了运行时环境性能问题的本质就是系统资源达到了使用的上限反映在应用层就是应用/组件的各项指标开始下降而应用/组件的不合理使用和设计也会加速系统资源的耗尽。因此分析瓶颈点时需要我们结合从不同角度分析出的结果抽出共性得到最终的结论。 其次建议先从应用层入手分析图中标注的高频指标抓出最重要的、最可疑的、最有可能导致性能的点得到初步的结论后再去系统层进行验证。这样做的好处是很多性能瓶颈点体现在系统层会是多变量呈现的譬如应用层的垃圾回收GC指标出现了异常通过 JDK 自带的工具很容易观测到但是体现在系统层上会发现系统当前的 CPU 利用率、内存指标都不太正常这就给我们的分析思路带来了困扰。 最后如果瓶颈点在应用层和系统层均呈现出多变量分布建议此时使用 ZProfiler、JProfiler 等工具对应用进行 Profiling获取应用的综合性能信息注Profiling 指的是在应用运行时通过事件Event-based、统计抽样Sampling Statistical或植入附加指令Byte-Code instrumentation等方法收集应用运行时的信息来研究应用行为的动态分析方法。譬如可以对 CPU 进行抽样统计结合各种符号表信息得到一段时间内应用内的代码热点。 下面介绍在不同的分析层次我们需要关注的核心性能指标同时也会介绍如何初步根据这些指标判断系统或应用是否存在性能瓶颈点至于瓶颈点的确认、瓶颈点的成因、调优手段将会在下一部分展开。 3.1 CPU线程 和 CPU 相关的指标主要有以下几个。常用的工具有 top、 ps、uptime、 vmstat、 pidstat等。 CPU利用率CPU UtilizationCPU 平均负载Load Average上下文切换次数Context Switchtop - 12:20:57 up 25 days, 20:49, 2 users, load average: 0.93, 0.97, 0.79 Tasks: 51 total, 1 running, 50 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.6 us, 1.8 sy, 0.0 ni, 89.1 id, 0.1 wa, 0.0 hi, 0.1 si, 7.3 st KiB Mem : 8388608 total, 476436 free, 5903224 used, 2008948 buff/cache KiB Swap: 0 total, 0 free, 0 used. 0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 119680 admin 20 0 600908 72332 5768 S 2.3 0.9 52:32.61 obproxy 65877 root 20 0 93528 4936 2328 S 1.3 0.1 449:03.61 alisentry_cli 第一行显示的内容当前时间、系统运行时间以及正在登录用户数。load average 后的三个数字依次表示过去 1 分钟、5 分钟、15 分钟的平均负载Load Average。平均负载是指单位时间内系统处于可运行状态正在使用 CPU 或者正在等待 CPU 的进程R 状态和不可中断状态D 状态的平均进程数也就是平均活跃进程数CPU 平均负载和 CPU 使用率并没有直接关系。 第三行的内容表示 CPU 利用率每一列的含义可以使用 man 查看。CPU 使用率体现了单位时间内 CPU 使用情况的统计以百分比的方式展示。计算方式为CPU 利用率 1 - CPU 空闲时间/ CPU 总的时间。需要注意的是通过性能分析工具得到的 CPU 的利用率其实是某个采样时间内的 CPU 平均值。注top 工具显示的的 CPU 利用率是把所有 CPU 核的数值加起来的即 8 核 CPU 的利用率最大可以到达800%可以用 htop 等更新一些的工具代替 top。 使用 vmstat 命令可以查看到「上下文切换次数」这个指标如下表所示每隔1秒输出1组数据 $ vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 504804 0 1967508 0 0 644 33377 0 1 2 2 88 0 9 上表的 cscontext switch 就是每秒上下文切换的次数按照不同场景CPU 上下文切换还可以分为中断上下文切换、线程上下文切换和进程上下文切换三种但是无论是哪一种过多的上下文切换都会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上从而缩短进程真正运行的时间导致系统的整体性能大幅下降。vmstat 的输出中 us、sy 分别用户态和内核态的 CPU 利用率这两个值也非常具有参考意义。 vmstat 的输只给出了系统总体的上下文切换情况要想查看每个进程的上下文切换详情如自愿和非自愿切换需要使用 pidstat该命令还可以查看某个进程用户态和内核态的 CPU 利用率。 CPU 相关指标异常的分析思路是什么 1CPU 利用率如果我们观察某段时间系统或应用进程的 CPU利用率一直很高单个 core 超过80%那么就值得我们警惕了。我们可以多次使用 jstack 命令 dump 应用线程栈查看热点代码非 Java 应用可以直接使用 perf 进行 CPU 采采样离线分析采样数据后得到 CPU 执行热点Java 应用需要符号表进行堆栈信息映射不能直接使用 perf得到结果。 2CPU 平均负载平均负载高于 CPU 数量 70%意味着系统存在瓶颈点造成负载升高的原因有很多在这里就不展开了。需要注意的是通过监控系统监测平均负载的变化趋势更容易定位问题有时候大文件的加载等也会导致平均负载瞬时升高。如果 1 分钟/5 分钟/15 分钟的三个值相差不大那说明系统负载很平稳则不用关注如果这三个值逐渐降低说明负载在渐渐升高需要关注整体性能 3CPU 上下文切换上下文切换这个指标并没有经验值可推荐几十到几万都有可能这个指标值取决于系统本身的 CPU 性能以及当前应用工作的情况。但是如果系统或者应用的上下文切换次数出现数量级的增长就有很大概率说明存在性能问题如非自愿上下切换大幅度上升说明有太多的线程在竞争 CPU。 上面这三个指标是密切相关的如频繁的 CPU 上下文切换可能会导致平均负载升高。如何根据这三者之间的关系进行应用调优将在下一部分介绍。 CPU 上的的一些异动通常也可以从线程上观测到但需要注意的是线程问题并不完全和 CPU 相关。与线程相关的指标主要有下面几个均都可以通过 JDK 自带的 jstack 工具直接或间接得到 应用中的总的线程数应用中各个线程状态的分布线程锁的使用情况如死锁、锁分布等 关于线程可关注的异常有 1线程总数是否过多。过多的线程体现在 CPU 上就是导致频繁的上下文切换同时线程过多也会消耗内存线程总数大小和应用本身和机器配置相关 2线程的状态是否异常。观察 WAITING/BLOCKED 线程是否过多线程数设置过多或锁竞争剧烈结合应用内部锁使用的情况综合分析 3结合 CPU 利用率观察是否存在大量消耗 CPU 的线程。 3.2 内存堆 和内存相关的指标主要有以下几个常用的分析工具有top、free、vmstat、pidstat 以及 JDK 自带的一些工具。 系统内存的使用情况包括剩余内存、已用内存、可用内存、缓存/缓冲区进程含 Java 进程的虚拟内存、常驻内存、共享内存进程的缺页异常数包含主缺页异常和次缺页异常Swap 换入和换出的内存大小、Swap 参数配置JVM 堆的分配JVM 启动参数JVM 堆的回收GC 情况。 使用 free 可以查看系统内存的使用情况和 Swap 分区的使用情况top 工具可以具体到每个进程如我们可以用使用 top 工具查看 Java 进程的常驻内存大小RES这两个工具结合起来可用覆盖大多数内存指标。下面是使用 free命令的输出 $free -h total used free shared buff/cache available Mem: 125G 6.8G 54G 2.5M 64G 118G Swap: 2.0G 305M 1.7G 上述输出各列的具体含义在这里不在赘述也比较容易理解。重点介绍下 swap 和 buff/cache 这两个指标。 Swap 的作用是把一个本地文件或者一块磁盘空间作为内存来使用包括换出和换入两个过程。Swap 需要读写磁盘所以性能不是很高事实上包括 ElasticSearch 、Hadoop 在内绝大部分 Java 应用都建议关掉 Swap这是因为内存的成本一直在降低同时这也和 JVM 的垃圾回收过程有关JVM在 GC 的时候会遍历所有用到的堆的内存如果这部分内存被 Swap 出去了遍历的时候就会有磁盘 I/O 产生。Swap 分区的升高一般和磁盘的使用强相关具体分析时需要结合缓存使用情况、swappiness 阈值以及匿名页和文件页的活跃情况综合分析。 buff/cache 是缓存和缓冲区的大小。缓存cache是从磁盘读取的文件的或者向磁盘写文件时的临时存储数据面向文件。使用 cachestat 可以查看整个系统缓存的读写命中情况使用 cachetop 可以观察每个进程缓存的读写命中情况。缓冲区buffer是写入磁盘数据或从磁盘直接读取的数据的临时存储面向块设备。free 命令的输出中这两个指标是加在一起的使用 vmstat 命令可以区分缓存和缓冲区还可以看到 Swap 分区换入和换出的内存大小。 了解到常见的内存指标后常见的内存问题又有哪些总结如下 系统剩余内存/可用不足某个进程占用太多、系统本身内存不足内存溢出内存回收异常内存泄漏进程在一段时间内内存使用持续走高、GC 频率异常缓存使用过大大文件读取或写入、缓存命中率不高缺页异常过多频繁的 I/O 读Swap 分区使用异常使用过大 内存相关指标异常后分析思路是怎么样的 使用 free/top 查看内存的全局使用情况如系统内存的使用、Swap 分区内存使用、缓存/缓冲区占用情况等初步判断内存问题存在的方向进程内存、缓存/缓冲区、Swap 分区观察一段时间内存的使用趋势。如通过 vmstat 观察内存使用是否一直在增长通过 jmap 定时统计对象内存分布情况判断是否存在内存泄漏通过 cachetop 命令定位缓冲区升高的根源等根据内存问题的类型结合应用本身进行详细分析。 举例使用 free 发现缓存/缓冲区占用不大排除缓存/缓冲区对内存的影响后 - 使用 vmstat 或者 sar 观察一下各个进程内存使用变化趋势 - 发现某个进程的内存时候用持续走高 - 如果是 Java 应用可以使用 jmap / VisualVM / heap dump 分析等工具观察对象内存的分配或者通过 jstat 观察 GC 后的应用内存变化 - 结合业务场景定位为内存泄漏/GC参数配置不合理/业务代码异常等。 3.3 磁盘文件 在分析和磁盘相关的问题时通常是将其和文件系统同时考虑的下面不再区分。和磁盘/文件系统相关的指标主要有以下几个常用的观测工具为 iostat和 pidstat前者适用于整个系统后者可观察具体进程的 I/O。 磁盘 I/O 利用率是指磁盘处理 I/O 的时间百分比磁盘吞吐量是指每秒的 I/O 请求大小单位为 KB;I/O 响应时间是指 I/O 请求从发出到收到响应的间隔包含在队列中的等待时间和实际处理时间IOPSInput/Output Per Second每秒的 I/O 请求数I/O 等待队列大小指的是平均 I/O 队列长度队列长度越短越好 使用 iostat 的输出界面如下 $iostat -dx Linux 3.10.0-327.ali2010.alios7.x86_64 (loginhost2.alipay.em14) 10/20/2019 x86_64 (32 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.01 15.49 0.05 8.21 3.10 240.49 58.92 0.04 4.38 2.39 4.39 0.09 0.07 上图中 %util 即为磁盘 I/O 利用率同 CPU 利用率一样这个值也可能超过 100%存在并行 I/OrkB/s 和 wkB/s分别表示每秒从磁盘读取和写入的数据量即吞吐量单位为 KB磁盘 I/O处理时间的指标为 r_await 和 w_await 分别表示读/写请求处理完成的响应时间svctm 表示处理 I/O 所需要的平均时间该指标已被废弃无实际意义。r/s w/s 为 IOPS 指标分别表示每秒发送给磁盘的读请求数和写请求数aqu-sz 表示等待队列的长度。 pidstat 的输出大部分和 iostat 类似区别在于它可以实时查看每个进程的 I/O 情况。 如何判断磁盘的指标出现了异常 当磁盘 I/O 利用率长时间超过 80%或者响应时间过大对于 SSD从 0.0x 毫秒到 1.x 毫秒不等机械磁盘一般为5ms~10ms通常意味着磁盘 I/O 存在性能瓶颈如果 %util 很大而 rkB/s 和 wkB/s 很小一般是因为存在较多的磁盘随机读写最好把随机读写优化成顺序读写可以通过 strace 或者 blktrace 观察 I/O 是否连续判断是否是顺序的读写行为随机读写应可关注 IOPS 指标顺序读写可关注吞吐量指标如果 avgqu-sz 比较大说明有很多 I/O 请求在队列中等待。一般来说如果单块磁盘的队列长度持续超过2一般认为该磁盘存在 I/O 性能问题。3.4 网络 网络这个概念涵盖的范围较广在应用层、传输层、网络层、网络接口层都有不同的指标去衡量。这里我们讨论的「网络」特指应用层的网络通常使用的指标如下: 网络带宽表示链路的最大传输速率网络吞吐表示单位时间内成功传输的数据量大小网络延时表示从网络请求发出后直到收到远端响应所需要的时间网络连接数和错误数 一般来说应用层的网络瓶颈有如下几类 集群或机器所在的机房的网络带宽饱和影响应用 QPS/TPS 的提升网络吞吐出现异常如接口存在大量的数据传输造成带宽占用过高网络连接出现异常或错误网络出现分区。 带宽和网络吞吐这两个指标一般我们会关注整个应用的通过监控系统可直接得到如果一段时间内出现了明显的指标上升说明存在网络性能瓶颈。对于单机可以使用 sar 得到网络接口、进程的网络吞吐。 使用 ping 或者 hping3 可以得到是否出现网络分区、网络具体时延。对于应用我们更关注整个链路的时延可以通过中间件埋点后输出的 trace 日志得到链路上各个环节的时延信息。 使用 netstat、ss 和 sar 可以获取网络连接数或网络错误数。过多网络链接造成的开销是很大的一是会占用文件描述符二是会占用缓存因此系统可以支撑的网络链接数是有限的。 3.5 工具总结 可以看到的是在分析 CPU、内存、磁盘等的性能指标时有几种工具是高频出现的如 top、vmstat、pidstat这里稍微总结一下: CPUtop、vmstat、pidstat、sar、perf、jstack、jstat内存top、free、vmstat、cachetop、cachestat、sar、jmap磁盘top、iostat、vmstat、pidstat、du/df网络netstat、sar、dstat、tcpdump应用profiler、dump分析。 上述的很多工具大部分是用于查看系统层指标的在应用层除了有 JDK 提供的一系列工具一些商用的产品如 gceasy.io分析 GC 日志、fastthread.io分析线程 dump 日志也是不错的。 排查 Java 应用的线上异常或者分析应用代码瓶颈可以使用阿里开源的 Arthas 这个工具非常强大下面简单介绍下。 Arthas 主要面向线上应用实时诊断解决的是类似「线上应用异常了需要在线进行分析和定位」的问题当然Arthas 提供的一些方法调用追踪工具对我们排查诸如「慢查询」等问题也是非常有帮助的。Arthas 提供的主要功能有 获取线程统计如线程持有的锁统计、CPU 利用率统计等类加载信息、动态类加载、方法加载信息调用栈追踪调用耗时统计方法调用参数、结果检测系统配置、应用配置信息反编译加载类.... 需要注意的是性能工具只是解决性能问题的手段我们了解常用工具的一般用法即可不要在工具学习上投入过多精力。 原文链接 本文为云栖社区原创内容未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:10月底实习准备-Mysql(按面试频率准备)

深入解析:10月底实习准备-Mysql(按面试频率准备)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

CEXE的%你赛5-题解

T1 简单 dfs,记录数组 \(vis\) 表示一个点有没有被搜索过,从小到大遍历 \(vis\),如果 \(vis_i=0\) 则从 \(i\) 开始遍历图,遍历时记录答案即可。 #include<bits/stdc++.h> using namespace std; int n,m; lo…

C++语言(1)

.数制的前缀 二进制:0b或0B。 八进制:0。注意代码中012的十进制数值是10。 十六进制:0x(字母小写)或0X(字母小写)。 .输入和输出 .1.scanf和printf 格式符 常见类型的格式符:类型 格式符int %dlong long %llds…

Windows多人共享文件夹全流程,附2025新共享文件快90%

针对传统Windows共享文件夹设置繁琐、不安全、仅限局域网的痛点,本文提出用坚果云创建多人共享文件夹。其操作简便,支持跨地域协作、精细权限管理与文件版本回溯,无缝替代传统方式,是实现团队安全、高效协同办公的…

第11章 day11-day12关于json请求体/逆向爬虫实战

第1知识点:关于json请求体 第2知识点:关于精准请求(如何排除干扰请求) 第3知识点:入口定位 一、关键字方法 (1) 方法关键字 encrypt decrypt (2) key关键字 第4知识点:断点与断点调试 普通断点 XHR断点 条件断点…

容斥与二项式反演

先挖坑,后填坑。容斥 容斥,实际上就是用总的方案数减去不合法的方案数。 我们考虑以下组合恒等式: \[\sum_{i = 0}^{n} (-1) ^ {i} C_{n}^{i} = [n = 0] \]为什么这个式子跟容斥有关呢? 我们考虑不合法的数量为 \(…

网上怎样做电缆网站建设网站公司怎么建站

centos7 mysql 基本测试&#xff08;7&#xff09;主从并行简单测试 重启MySQL服务使配置生效。 注意&#xff1a;并行复制需要slave的硬件资源充足&#xff0c;并且确保网络通信和IO性能不是瓶颈。不是所有的应用场景都适合并行复制&#xff0c;比如写密集型应用或者slave负…

react useCallback Hook详解

什么是 useCallback Hook? useCallback 是一个 React Hook,用于缓存函数,防止函数在每次组件渲染时被重新创建。它的主要目的是优化性能,特别是在将函数作为 props 传递给子组件或在依赖数组中使用时。 简单来说,…

从Docker构建失败到CRA被淘汰:一个React项目的ES模块探索记录

开头 最近给一个React项目配Docker构建,碰到了一个看起来简单实际很麻烦的错误: Failed to compile. The target environment doesnt support dynamic import() syntax so its not possible to use external type mo…

充气泵PCBA方案中数字传感器和模拟传感器的差异

充气泵的核心需求是实时、准确检测气罐/充气对象(如轮胎、泳圈)的压力,并根据压力值控制电机启停(如达到目标压力后停机),二者的应用差异直接影响产品体验:1.模拟传感器的应用场景低成本入门级充气泵(如家用小…

实用指南:小米17手机的上市公司供应商

实用指南:小米17手机的上市公司供应商pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

小程序支付遇到:system:access_denied

小程序支付遇到:system:access_denied 原因: 小程序支付,只能用手机微信测试,不能用电脑。 -

cloudfared 内网穿透经过docker方式遇到的问题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CDN + WAF + CLB + Higress 架构下的 TLS 加解密详细解析(适用阿里云)

在云环境中,Web 应用常见架构是:用户 → CDN → WAF → CLB → ECS/Higress本文详细解析 WAF 在网络拓扑中的位置、TLS 加解密流程、回源逻辑,以及自定义接入模式下的注意事项,结合阿里云官方推荐实践。1.WAF 在网…

react useMemo Hook详解

什么是 useMemo Hook? useMemo 是一个 React Hook,用于缓存计算结果,避免在每次组件渲染时重复执行昂贵的计算。它通过记忆计算的值,只有在依赖项变化时才会重新计算,从而优化性能。 简单来说,useMemo 让你的计算…

门户网站改版建议wordpress 调用热门 文章

文章目录 1.liunx简介2.liunx的jdk安装2.liunx的tomcat安装3.liunx的mysql安装4.单机项目部署 1.liunx简介 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费…

vs2012网站开发济南做网站的网络公司

简介&#xff1a; 淘宝的开放技术目前主要有两种形态&#xff0c;第一种是小程序&#xff0c;第二种是今天的主角小部件。它是基于小程序技术体系&#xff0c;面向标准化、轻量化、高性能的开放卡片场景。本文我们将通过技术设计策略、核心技术设施、业务场景接入、技术演进路线…

网站后台系统有哪些佛山优化企业网站排名平台

实验要求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有IP地址。 2、&#xff08;1&#xff09;R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方。 &#xff08;2&#xff09;R2与R5之间使用ppp的CHAP认证&#xff0c;R5为主认证方。 &#…

完整教程:Python 编辑器:Visual Studio Code(进阶篇)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Python技能大赛-备赛建议

好的,非常理解您希望得到具体、可行的备赛建议。基于您提供的比赛文件,特别是关于“专业能力模块”的详细要求,我为您梳理了一套系统的备赛策略。 [cite_start]该模块分为 理论知识 (权重10%) 和 实践操作 (权重60%…