本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。
在国内互联网公司中,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; }