AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 427334
Accepted
Mickey Shine
Mickey Shine
Asked: 2012-09-14 19:22:20 +0800 CST2012-09-14 19:22:20 +0800 CST 2012-09-14 19:22:20 +0800 CST

在本地和远程运行 ab 有什么区别?

  • 772

我正在使用 apache ab 对我的站点进行基准测试,我注意到在服务器上运行 ab 和在客户端远程运行 ab 时,响应时间有很大差异。

那么在服务器上运行ab和远程运行ab最大的区别是什么。网络运输消耗的时间是多少?

apache-2.2
  • 3 3 个回答
  • 1740 Views

3 个回答

  • Voted
  1. Best Answer
    Ben Lessani
    2012-09-16T13:57:05+08:002012-09-16T13:57:05+08:00

    延迟和网络容量。

    我们写了一篇关于使用 Siege(与 AB 非常相似)进行并发/负载测试的好文章,特别提到了本地与远程测试。

    你可以在这里阅读完整版本:

    http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento-performance/

    测试远程服务器几乎没有意义,因为它是并发测试(即可以重复满足多少请求),直接瓶颈是两台机器之间的网络连接。延迟和 TCP/IP 开销使测试远程站点完全没有意义,两台服务器之间的对等点之间最轻微的网络拥塞将立即显示性能下降。因此,真正开始发挥作用的是 TCP 3 次握手的完成速度——被测试的服务器可能正在提供动态页面或静态 0 字节文件——你可以看到完全相同的性能速率,因为连通性是瓶颈。

    我们可以使用简单的 ping 来显示这一点。我们的数据中心位于英国曼彻斯特,因此我们将尝试对英国的服务器执行 ping 操作,然后再对美国的服务器执行 ping 操作,并显示差异。两台服务器都通过 100Mbit 连接连接到互联网。

    从英国 Ping 到英国

    [~]$ ping www.bytemark.co.uk -c4
    PING www.bytemark.co.uk (212.110.161.177) 56(84) bytes of data.
    64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=1 ttl=57 
    --- www.bytemark.co.uk ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 2.515/2.641/2.869/0.142 mstime=2.86 ms
    

    从英国 Ping 到美国

    [~]$ ping www.mediatemple.net -c 4
    PING www.mediatemple.net (64.207.129.182) 56(84) bytes of data.
    64 bytes from mediatemple.net (64.207.129.182): icmp_seq=1 ttl=49 time=158 ms
    --- www.mediatemple.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3004ms
    rtt min/avg/max/mdev = 154.155/155.282/158.321/1.802 ms
    

    您可以立即看到性能差异。对于从英国到美国的单个 TCP/IP 连接,它花费了 156 毫秒,是英国服务器的 62 倍。这意味着,在你尝试任何事情之前,你在 Siege 上每秒可达到的最大吞吐量将达到每秒 6 个事务,仅由于延迟。

    让我们来测试一下……

    [~]$ siege http://www.wiredtree.com/images/arrow.gif -c 1 -t 10S -b
    ** SIEGE 2.66
    ** Preparing 1 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...done.                                                                                                                                                                         
    Transactions:                      50 hits
    Availability:                 100.00 %
    Elapsed time:                   9.89 secs
    Data transferred:               0.00 MB
    Response time:                  0.20 secs
    Transaction rate:               5.06 trans/sec
    Throughput:                     0.00 MB/sec
    Concurrency:                    1.00
    Successful transactions:          50
    Failed transactions:               0
    Longest transaction:            0.20
    Shortest transaction:           0.19
    

    略低于 6 TPS 的预测数字。但不幸的是,情况总是如此。延迟总是会破坏任何并发测试,即使远程服务器有更多的能力。让我们从美国的服务器重复完全相同的测试,看看延迟对测试有何影响。首先快速ping一下,

    [~]$ ping www.mediatemple.net -c 4
    PING www.mediatemple.net (64.207.129.182) 56(84) bytes of data.
    64 bytes from mediatemple.net (64.207.129.182): icmp_seq=1 ttl=52 time=62.8 ms
    --- www.mediatemple.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3067ms
    rtt min/avg/max/mdev = 62.872/62.922/62.946/0.029 ms
    
    [~]$ siege http://mediatemple.net/_images/searchicon.png -c 1 -t 10S -b
    ** SIEGE 2.72
    ** Preparing 1 concurrent users for battle.
    The server is now under siege...
    Lifting the server siege...      done.
    
    Transactions:                     73 hits
    Availability:                 100.00 %
    Elapsed time:                   9.62 secs
    Data transferred:               0.22 MB
    Response time:                  0.13 secs
    Transaction rate:               7.59 trans/sec
    Throughput:                     0.02 MB/sec
    Concurrency:                    0.99
    Successful transactions:          73
    Failed transactions:               0
    Longest transaction:            0.14
    Shortest transaction:           0.12
    

    所以你知道了,我们已经设法将每秒的交易量翻了一番,而无需任何服务器端更改,只需使用离测试站点更近的服务器——这表明 Siege 对网络延迟的敏感程度。

    Siege 将受到测试服务器和远程服务器上可用带宽的限制。因此,一旦您开始达到更高的吞吐量水平,下载的内容量就会开始增加。在我们上面的示例中,10 秒内下载了 0.02MB——这是一个很小的 ​​0.16 Mbps(每秒兆位)。但是当你开始增加并发用户的数量时,事情可能会发生根本性的变化,很容易使网络连接饱和——在服务器本身达到其容量之前很久。

    因此,如果您测试的服务器只有 20Mbit 的可用带宽,您可能会在前面提到的 4Kb 资源上看到最多约 500 个请求/秒。

    内容摘自 http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento-performance/

    • 2
  2. Shane Madden
    2012-09-14T19:29:57+08:002012-09-14T19:29:57+08:00

    是的,不同的网络情况是原因。HTTP 请求往往需要 2 次往返(对于非常小的请求和响应):

    Client -> Server, SYN
    Server -> Client, SYN/ACK
    Client -> Server, ACK and HTTP request
    Server -> Client, HTTP response
    

    所以,ping你的服务器,然后加倍;这是平均添加到每个请求的时间。

    您可以启用 HTTP keep-alive-k并从等式中删除其中一个往返,但由于延迟,它仍然比本地请求慢。

    • 0
  3. golja
    2012-09-14T19:32:53+08:002012-09-14T19:32:53+08:00

    正如您所建议的那样,差异是由于从远程客户端到 Web 服务器的互联网传输。

    因此,在进行基准测试以尝试模拟您的用户体验时,这始终是一个好习惯。因此,我所做的是尝试根据访问者的地理位置运行不同的基准测试,以了解他们对网站的体验。例如,如果我的大多数访问者来自美国,我会从那里运行一个 EC2 实例并运行基准测试。

    基于此,如果需要,您可以决定部署某种 CDN。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve