如何深入总结Web中间件性能分析与调优的实践之路?

摘要:本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款了,包括很多大型电商网站淘宝、京东、苏宁易购等,都在
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款了,包括很多大型电商网站淘宝、京东、苏宁易购等,都在使用Nginx或者Apache作为Web中间件。而且很多编程语言在做Web开发时,会将Apache或者Nginx作为其绑定的固定组件,比如php语言做Web开发时,就经常和Apache联系在一起,使得apche成为了php在Web开发时的一个标配。而Nginx不管是在作为Web静态资源访问管理或者作为动态的请求代理性能都是非常的高效,当然Nginx或者Apache在性能分析时,有时候也会存在性能瓶颈或者需要进行调优以支持更高的并发处理能力。 1. Nginx的性能分析和调优->关注清哥聊技术公众号,了解更多技术文章 1.1 Nginx的负载均衡策略的选择 在一般的时候,Web中间件最大的作用就是负责对请求进行分发,也就是我们常说的起到负载均衡的作用,当然负载均衡只是Nginx的作用之一,Nginx常见的负载均衡策略一般包括轮询、指定权重(weight)、ip_hash、least_conn、fair、url_hash等六种,其中默认执行的策略为轮询,fair、url_hash属于第三方策略,这两种策略不是Nginx自带支持的策略,需要安装第三方的插件来辅助支持。在不同的场景下,每一种策略的选择对系统的整体性能影响都非常大,一般建议根据实际场景和服务器配置来选择对应的负载均衡策略。 轮询策略:Nginx的负载均衡是通过配置upstream来实现请求转发的,在upstream如果没有指定其他任何的策略时,Nginx会自动执行轮询转发策略,upstream中配置每台服务器的权重都一样,会按照顺序依次转发。如下所示就是一个简单的upstream配置,由于配置了192.168.1.14和192.168.1.15两台服务器,所以请求会按照接收到的顺序依次轮询的转发给192.168.1.14和192.168.1.15两台服务器进行执行。Nginx能自动感知转发到的后端服务器是否挂掉,如果挂掉后Nginx会自动将那台挂掉的服务器从upstream中剔除。 upstream applicationServer { server 192.168.1.14; server 192.168.1.15; } 使用轮询策略时,其他非必填的辅助参数如下:(转载请注明出处:来源于博客园,作者:张永清 https://www.cnblogs.com/laoqing/p/14259788.html) 使用轮询策略的辅助参数 参数 含义 fail_timeout 该参数需要和max_fails参数结合一起来使用,用于表示在fail_timeout指定的时间内某个server允许重试连接失败的最大次数 max_fails 在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,Nginx就判定该服务器挂掉了 down 标记指定的服务器已经挂掉了,Nginx将不会再向标记为down的服务器转发任何的请求 指定权重(weight):通过在upstream配置中给相应的服务器指定weight权重参数来实现按照权重分发请求,weight参数值的大小和请求转发比率成正比,一般用于后端应用程序服务器硬件配置差异大而导致承受的访问压力不一样的情况可以使用该配置,配置示例如下: upstream applicationServer { server 192.168.1.14 weight=8; server 192.168.1.15 weight=10; } ip_hash:每个请求按原始访问ip的hash结果来进行请求转发,由于同一个ip的hash值肯定是不变的,这样每个固定客户端就会只访问一个后端应用程序服务器,此种配置一般可以用来解决多个应用程序服务器的session复制和同步的问题,因为同一个ip的请求都转发到了同一台服务器的应用程序上了,所以也就不会有session不同步的问题了,但是可能会导致后端应用服务器的负载不均的情况,因为这种策略下后端应用服务器收到的请求数肯定是很难一样多。
阅读全文