Java性能调优步骤:基于等待的调优(五)

Java性能调优方法:基于等待的调优(五)

后退调优

    现在关于基于层次的和基于技术的等待点的一切都介绍完了,最后一步就是优化每一个等待点的配置。这一步有时被称为“后退调优”,其思想非常简单:

    1、开放所有基于层次的等待点和外部依赖池——也就是配置它们允许过多的负载经过服务器。
    2、根据应用生成均衡的和具有代表性的服务请求。
    3、定位首先透支的等待点,通常是外部依赖,比如数据库。
    4、减小配置以控制等待点允许足够的负载经过外部依赖而不透支。
    5、调整所有其他基于层次的等待点,发送足够的负载经过服务器,最大化受限制的等待点,但是也不让请求等待。
    6、允许所有其他请求在业务逻辑层之上等待,比如web服务器端。

    此处的原则就是应用应该发送一定数量的负载给它的外部依赖资源以最大化它们的使用率又不导致透支—并且所有其他等待点应该合理配置以发送足够的负载给这些受限制的等待点。例如,如果数据库对每一个应用服务器最多支持50个连接(例如,配置池容纳40或45个连接)。接下来,如果80个线程产生40个数据库连接,则应用的线程池应配置为80.最后,web服务器在任意时刻应该发送不超过80个请求给每一个应用服务器。

    所有基于技术的等待点,比如对象池、缓存和垃圾回收,应该调整到最大化请求的吞吐量使得尽可能快的穿越服务器或者基于层析的等待点之间。

    总结

    性能调优曾经是“艺术性”多于“科学性”,但是通过结合抽象分析和尝试并产生错误,基于等待的调优方法已经证明能够使该过程更具科学性和更有效率。基于等待的调优首先执行一个应用架构的等待点分析,以此定位有可能导致请求等待的某个技术。等待点来自两方面:基于层次的等待点,代表着跨越应用层次的转换;基于技术的等待点,代表着可能提高或降低性能的技术,比如缓存、池和通讯基础设施。一旦定位好了一系列等待点,调优过程就此开始:开放所有基于层次的等待点和外部依赖池,产生均衡的和具有代表性的负载,然后后退调优,收紧等待点以最大化该请求最薄弱的一环的性能,但是不要透支。基于等待的调优方法在生产环境中已经一次又一次得到了证明,不仅仅是高效的,而且允许性能工程师快速实现可度量的性能优化。