`
mryufeng
  • 浏览: 982681 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Haproxy 1.4-dev2: barrier of 100k HTTP req/s crossed

阅读更多
原文地址: http://haproxy.1wt.eu/10g.html

点滴优化造就了今天的性能, willy好样的,应该是目前软件做到的最好的数字

Introduction

      It was my first test since I moved house. I wanted to quickly plug the machines together to see if my work on version 1.4 went into the right direction, and most importantly was not causing performance drops. Verdict below confirms it. A new record of 108000 HTTP requests processed per second was broken, and a new record of 40000 forwarded HTTP requests per second was broken too.

      The first test only accepts a new connection, reads the request, parses it, checks an ACL, sends a redirect and closes. A session rate of 132000 connections per second could even be measured in pure TCP mode, but this is not very useful :
     

The second test forwards the request to a real server instead, and fetches a 64-byte object :


      These improvements are due to the ability to tell the system to merge some carefully chosen TCP packets at critical phases of the session. This results in lower number of packets per session, which in turn saves both bandwidth and CPU cycles. The smallest session is now down to 5-6 packets on each side, down from 9 initially.
  • 大小: 912 Bytes
  • 大小: 648 Bytes
1
0
分享到:
评论
9 楼 fxltsbl 2012-08-25  
A new record of 108000 HTTP requests processed per second was broken, and a new record of 40000 forwarded HTTP requests per second was broken too

麻烦请教:HTTP requests processed   和 forwarded HTTP requests  什么区别?
为什么两个值差距这么大
8 楼 yaoweibin 2010-03-31  
mryufeng 写道
yaoweibin 写道
今天的发现:
1、Nginx的测试配置少了2台服务器,汗。。。但是对于测试结果应该影响不大。
2、今天我把请求的网页换成100K的大页面,两者测试结果相差不大,至少没有像昨天的测试结果那样明显。两者测试都几乎把1000M的网卡占满了。

你在同一台机器跑ab和haproxy?

是的,一般ab只占一个CPU,还好的。
7 楼 mryufeng 2010-03-23  
yaoweibin 写道
今天的发现:
1、Nginx的测试配置少了2台服务器,汗。。。但是对于测试结果应该影响不大。
2、今天我把请求的网页换成100K的大页面,两者测试结果相差不大,至少没有像昨天的测试结果那样明显。两者测试都几乎把1000M的网卡占满了。

你在同一台机器跑ab和haproxy?
6 楼 yaoweibin 2010-03-19  
今天的发现:
1、Nginx的测试配置少了2台服务器,汗。。。但是对于测试结果应该影响不大。
2、今天我把请求的网页换成100K的大页面,两者测试结果相差不大,至少没有像昨天的测试结果那样明显。两者测试都几乎把1000M的网卡占满了。
5 楼 mryufeng 2010-03-18  
yaoweibin 写道
跟HAProxy进行了一下比较,测试结果好像Nginx的性能好一点。由于我对HAProxy并不熟悉,以前甚至以为HAProxy没有多进程支持,十分孤陋寡闻。下面是我的Nginx和HAProxy的配置,请您看一下下面的HAProxy配置还有哪些地方可以优化一下,希望可以得到您的帮助。

nginx的配置:

worker_processes  4;
tcp {
    tcp_nodelay off;

    upstream test{
        server 172.19.0.129;
        server 172.19.0.130;
        server 172.19.0.131;
        server 172.19.0.132;
        server 172.19.0.235;
        server 172.19.0.236;
        server 172.19.0.237;
        server 172.19.0.238;
        server 172.19.0.239;
        check interval=3000 rise=2 fall=5 timeout=500;
    }

    server {
        listen 1982;
        proxy_pass test;
    }
}

haproxy的配置:

global
    log 127.0.0.1 daemon
    user yaoweibin
    nbproc 4

defaults
    backlog 2048
    balance roundrobin
    log global
    mode tcp
    retries 3
    contimeout 6s
    clitimeout 600s
    srvtimeout 600s

listen  test 0.0.0.0:8080
    server test-1 172.19.0.129:80 check inter 3s rise 2 fall 5 weight 10
    server test-2 172.19.0.130:80 check inter 3s rise 2 fall 5 weight 10
    server test-3 172.19.0.131:80 check inter 3s rise 2 fall 5 weight 10
    server test-4 172.19.0.132:80 check inter 3s rise 2 fall 5 weight 10
    server test-5 172.19.0.133:80 check inter 3s rise 2 fall 5 weight 10
    server test-6 172.19.0.134:80 check inter 3s rise 2 fall 5 weight 10
    server test-7 172.19.0.135:80 check inter 3s rise 2 fall 5 weight 10
    server test-8 172.19.0.136:80 check inter 3s rise 2 fall 5 weight 10
    server test-9 172.19.0.137:80 check inter 3s rise 2 fall 5 weight 10
    server test-10 172.19.0.138:80 check inter 3s rise 2 fall 5 weight 10
    server test-11 172.19.0.139:80 check inter 3s rise 2 fall 5 weight 10



我的测试机器是一台四核的linux机器,请求获取的是203个字节的网页,后端有11台web服务器。由于在同一台服务器上用ab,当测试并发数大的时候,ab本身的CPU资源消耗有一定的影响。下面是测试结果:

keepalive的请求
ab -k -n 10000 -c 10 http://127.0.0.1:1982/
haproxy 2007 请求/每秒
nginx 8148

sudo ab -k -n 100000 -c 100 http://127.0.0.1:1982/
haproxy 8848
nginx 21726

sudo ab -k -n 100000 -c 200 http://127.0.0.1:1982/
haproxy 11323
nginx 21594

sudo ab -k -n 100000 -c 500 http://127.0.0.1:1982/
haproxy 13761
nginx 21319

sudo ab -k -n 100000 -c 1000 http://127.0.0.1:1982/
haproxy 15229
nginx 19587

sudo ab -k -n 100000 -c 2000 http://127.0.0.1:1982/
haproxy 13722
nginx 18254

非keepalive的请求
sudo ab -n 10000 -c 10 http://127.0.0.1:1982/
haproxy 1476
nginx 1752

sudo ab -n 10000 -c 100 http://127.0.0.1:1982/
haproxy 2547
nginx 2231

sudo ab -n 10000 -c 200 http://127.0.0.1:1982/
haproxy 2525
nginx 4991

sudo ab -n 10000 -c 500 http://127.0.0.1:1982/
haproxy 2356
nginx 4814

sudo ab -n 10000 -c 1000 http://127.0.0.1:1982/
haproxy 2412
nginx 5075

sudo ab -n 10000 -c 2000 http://127.0.0.1:1982/
haproxy 2287
nginx 4721



这个测试太蹊跷了 我有空也看下... 理论上haproxy要快好多...
4 楼 yaoweibin 2010-03-18  
跟HAProxy进行了一下比较,测试结果好像Nginx的性能好一点。由于我对HAProxy并不熟悉,以前甚至以为HAProxy没有多进程支持,十分孤陋寡闻。下面是我的Nginx和HAProxy的配置,请您看一下下面的HAProxy配置还有哪些地方可以优化一下,希望可以得到您的帮助。

nginx的配置:

worker_processes  4;
tcp {
    tcp_nodelay off;

    upstream test{
        server 172.19.0.129;
        server 172.19.0.130;
        server 172.19.0.131;
        server 172.19.0.132;
        server 172.19.0.235;
        server 172.19.0.236;
        server 172.19.0.237;
        server 172.19.0.238;
        server 172.19.0.239;
        check interval=3000 rise=2 fall=5 timeout=500;
    }

    server {
        listen 1982;
        proxy_pass test;
    }
}

haproxy的配置:

global
    log 127.0.0.1 daemon
    user yaoweibin
    nbproc 4

defaults
    backlog 2048
    balance roundrobin
    log global
    mode tcp
    retries 3
    contimeout 6s
    clitimeout 600s
    srvtimeout 600s

listen  test 0.0.0.0:8080
    server test-1 172.19.0.129:80 check inter 3s rise 2 fall 5 weight 10
    server test-2 172.19.0.130:80 check inter 3s rise 2 fall 5 weight 10
    server test-3 172.19.0.131:80 check inter 3s rise 2 fall 5 weight 10
    server test-4 172.19.0.132:80 check inter 3s rise 2 fall 5 weight 10
    server test-5 172.19.0.133:80 check inter 3s rise 2 fall 5 weight 10
    server test-6 172.19.0.134:80 check inter 3s rise 2 fall 5 weight 10
    server test-7 172.19.0.135:80 check inter 3s rise 2 fall 5 weight 10
    server test-8 172.19.0.136:80 check inter 3s rise 2 fall 5 weight 10
    server test-9 172.19.0.137:80 check inter 3s rise 2 fall 5 weight 10
    server test-10 172.19.0.138:80 check inter 3s rise 2 fall 5 weight 10
    server test-11 172.19.0.139:80 check inter 3s rise 2 fall 5 weight 10



我的测试机器是一台四核的linux机器,请求获取的是203个字节的网页,后端有11台web服务器。由于在同一台服务器上用ab,当测试并发数大的时候,ab本身的CPU资源消耗有一定的影响。下面是测试结果:

keepalive的请求
ab -k -n 10000 -c 10 http://127.0.0.1:1982/
haproxy 2007 请求/每秒
nginx 8148

sudo ab -k -n 100000 -c 100 http://127.0.0.1:1982/
haproxy 8848
nginx 21726

sudo ab -k -n 100000 -c 200 http://127.0.0.1:1982/
haproxy 11323
nginx 21594

sudo ab -k -n 100000 -c 500 http://127.0.0.1:1982/
haproxy 13761
nginx 21319

sudo ab -k -n 100000 -c 1000 http://127.0.0.1:1982/
haproxy 15229
nginx 19587

sudo ab -k -n 100000 -c 2000 http://127.0.0.1:1982/
haproxy 13722
nginx 18254

非keepalive的请求
sudo ab -n 10000 -c 10 http://127.0.0.1:1982/
haproxy 1476
nginx 1752

sudo ab -n 10000 -c 100 http://127.0.0.1:1982/
haproxy 2547
nginx 2231

sudo ab -n 10000 -c 200 http://127.0.0.1:1982/
haproxy 2525
nginx 4991

sudo ab -n 10000 -c 500 http://127.0.0.1:1982/
haproxy 2356
nginx 4814

sudo ab -n 10000 -c 1000 http://127.0.0.1:1982/
haproxy 2412
nginx 5075

sudo ab -n 10000 -c 2000 http://127.0.0.1:1982/
haproxy 2287
nginx 4721
3 楼 mryufeng 2010-03-12  
haproxy通过多进程的方式也是可以利用多smp的, 而且效率要比nginx高好多
2 楼 yaoweibin 2010-03-12  
最近我尝试在Nginx上实现简单的TCP proxy,测试代理到Nginx的请求,测试结果有原来Nginx 2/3到3/4的性能,还没有跟HAProxy进行比较过。我写的模块:http://github.com/yaoweibin/nginx_tcp_proxy_module。

我觉得Nginx在SMP系统里面还是有优势的,等我的模块开发成熟了,我再来进行详细比较。
1 楼 litaocheng 2010-03-11  
:) 项目之道啊...

相关推荐

    haproxy-1.8.23-1.el7.x86_64.rpm haproxy 1.8.23 rpm包

    haproxy-1.8.23 RPM包 for Centos7 rpm -ivh 安装即可,软件目录:/usr/local/haproxy-1.8.23 配置文件: /etc/haproxy/haproxy.cfg 可通过 systemctl 来进行 start 、stop 、restart 可通过 systemctl enable...

    HAProxy-2-RPM-builder:最新HAProxy 2.3(CentOS 7)的RPM构建器

    HAProxy 2.3(CentOS 7)的RPM构建器 以普通用户的身份在构建框中执行以下步骤: sudo yum -y groupinstall 'Development Tools'cd /optsudo git clone ...2-RPM-builder建造:没有Lua: sudo make使用Lua: sudo make ...

    haproxy-1.9-dev8.tar.gz

    haproxy-1.9-dev8是haproxy的一个开发版本,这标志着它是1.9系列中的一个预发布版本,可能包含新特性、改进和bug修复。 在haproxy-1.9-dev8.tar.gz这个压缩包中,用户可以获取haproxy的源代码,以便在自己的系统上...

    rh-haproxy18-haproxy-1.8.24-3.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    rh-haproxy18-haproxy-syspaths-1.8.4-1.el7.x86_64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    Haproxy+Mycat集群搭建指南

    - 下载并编译Haproxy:`wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.25.tar.gz`, `tar zcvf haproxy-1.3.20.tar.gz`, `cd haproxy-1.3.20`, `make TARGET=linux26 PREFIX=/usr/local/haproxy ARCH=...

    haproxy-2.3.2-win64

    haproxy-2.3.2-win64是一款专为Windows 64位操作系统设计的高性能、免费的负载均衡器和反向代理软件。由Cygwin64编译环境构建,它允许在Windows平台上实现与Linux系统类似的Unix-like功能。Cygwin是一种GNU和开源...

    CentOS7—HAProxy安装与配置详解

    Haproxy下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 关闭SElinux、配置防火墙 1、vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq...

    netty-codec-haproxy-4.1.74.Final-API文档-中文版.zip

    赠送jar包:netty-codec-haproxy-4.1.74.Final.jar; 赠送原API文档:netty-codec-haproxy-4.1.74.Final-javadoc.jar; 赠送源代码:netty-codec-haproxy-4.1.74.Final-sources.jar; 赠送Maven依赖信息文件:netty-...

    haproxy1.1-2.8.zip

    haproxy-2.8.3.tar.gz haproxy-1.1.34.tar.gz haproxy-1.2.18.tar.gz haproxy-1.3.28.tar.gz haproxy-1.4.27.tar.gz haproxy-1.5.19.tar.gz haproxy-1.6.16.tar.gz haproxy-1.7.14.tar.gz haproxy-1.8.12.tar.gz ...

    用haproxy实现RDP会话负载均衡

    wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz tar zxvf haproxy-1.4.8.tar.gz cd haproxy-1.4.8 make TARGET=linux26 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy ...

    netty-codec-haproxy-4.1.73.Final-API文档-中英对照版.zip

    赠送jar包:netty-codec-haproxy-4.1.73.Final.jar; 赠送原API文档:netty-codec-haproxy-4.1.73.Final-javadoc.jar; 赠送源代码:netty-codec-haproxy-4.1.73.Final-sources.jar; 赠送Maven依赖信息文件:netty-...

    haproxy-1.4.25.tar.gz

    2. 进入源码目录:`cd haproxy-1.4.25` 3. 配置编译选项(根据实际需求调整):`./configure --prefix=/usr/local/haproxy` 4. 编译和安装:`make && make install` 5. 创建配置文件(参考`examples/haproxy.cfg`)...

    rh-haproxy18-haproxy-syspaths-1.8.4-2.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    haproxy-1.7.1.tar.gz

    haproxy-1.7.1.tar.gz 是一个包含haproxy 1.7.1版本源代码的压缩包文件,通常在Linux或类UNIX系统中使用。haproxy是一款高性能、免费且开源的负载均衡器,广泛应用于互联网服务,如Web服务器、数据库集群和API服务等...

    haproxy-etcd-rest:一个HAProxy-config和一些bash脚本以与etcd同步,以在包括负载平衡在内的多台机器上组成REST-API

    HAProxy与ETCD for REST Jochen Mader < > v0.1,2015年10月:初始版本。 ==简介 具有丰富的功能,易于配置的反向代理。 是中的分布式层次结构键/值存储。 该项目提供了一些Shell基础结构,用于从ETCD生成主机...

    haproxy-ansible-源码.rar

    标题中的“haproxy-ansible-源码.rar”表明这是一个关于使用Ansible自动化部署和管理HAProxy的源代码压缩包。HAProxy是一款广泛使用的开源负载均衡器和反向代理服务器,而Ansible则是一种流行的IT自动化工具,常用于...

    Windows Haproxy-2.2-dev5 20200325.7z

    Windows Haproxy-2.2-dev5 20200325 是自己在2020年3月25日在Haproxy官网下载的源代码并Windows系统将其编译成Haproxy.exe的二进制可执行文件,经过压力测试毫无问题,直接在文件中启动Haproxy.bat脚本即可运行。...

    haproxy-confd-demo:CoreOS中使用Confd和Etcd动态重新配置HAProxy

    haproxy-confd-演示 此 repo 说明了如何使用 HAProxy 和 confd 在 CoreOS 中对 Web 容器进行负载平衡。 快速开始 克隆这个 repo $ git clone https://github.com/coopermaa/haproxy-confd-demo.git $ cd haproxy-...

    haproxy-1.5.18-1.el6.x86_64.rpm

    新手练习 haproxy-1.5.18-1.el6.x86_64.rpm

Global site tag (gtag.js) - Google Analytics