简述

Erlang有几个常用的http client

针对hackney和ibrowse做了下简单性能测试,测试项目地址

gun本身没有实现进程池,所以暂时不考虑纳入一起测试对比。

结论:

  • 两个性能并无太大差距,普通情况下,两者可以互相替换,喜欢哪个就哪个。
  • hackney更稳定点,ibrowse高压下少许波动。

测试

环境

  • 客户端
    • 8核 Intel® Core™ i7-8550U CPU @ 1.80GHz
    • Erlang 20.2
  • 服务端
    • 2核 Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz
    • golang 1.10 基于gin的http server
  • Latency between the two servers < 1 ms

结果

Client  PoolSize  Concurency  Requests/s  Error %
=================================================
hackney        5           4        1954      0.0
hackney        9           8        3526      0.0
hackney       17          16        6608      0.0
hackney       33          32        8400      0.0
hackney       65          64        9804      0.0
hackney      129         128       10007      0.0
hackney      257         256        9079      0.0
hackney      513         512       10272      0.0
hackney     1025        1024        9089      0.0
ibrowse        5           4        2090      0.2
ibrowse        9           8        3667      3.9
ibrowse       17          16        5243      9.6
ibrowse       33          32        6463      8.5
ibrowse       65          64        7429      0.9
ibrowse      129         128        7668      0.1
ibrowse      257         256        7299      0.0
ibrowse      513         512        7007      0.0
ibrowse     1025        1024        7763      0.0