Skip to content

BENCHMARK : Pipy 0.90 Multi Threads HTTP1.1

CaiShu edited this page Jan 27, 2023 · 11 revisions

昨天flomesh发布了pipy 0.90版本,这个版本主要的变化是增加了多线程支持。详细的Release Note可以参考这里。

Pipy最初是作为sidecar proxy为目标进行设计和研发的,随着发展,pipy被使用在了越来越多的非sidecar proxy场景下。如0.50版本引入的MQTT协议支持,是为了满足用户对数亿IoT设备接入的需求。当前的0.90版本引入的多线程模式,是为了满足用户在高性能硬件平台上使用Pipy自建负载均衡器的需求。通过在高性能的白牌服务器上运行Pipy,可以实现媲美F5 BigIP等商业硬件产品的负载均衡能力,同时整体成本大幅降低。

Pipy多线程的实现基于asio的线程库,同时采用Linux内核的port reuse作为线程间的负载均衡。

这次的Benchmark测试里,我们主要关注pipy在多线程模式下随着线程数增加,pipy所能处理的HTTP1.1请求是否线性增长;以及在给定的硬件平台上,完成一百万TPS所需要的资源情况;以及在高负载基本HTTP1.1处理时候是否有明显的内存泄漏。

这次测试所采用的硬件,最开始我们选择了一台单处理Intel Xeon Gold 6144的服务器。这是2017年推出的当时高端处理器,具有8核心16线程,24M缓存。我们采购这种二手服务器做测试主要是成本原因。我们测试从pipy 一个线程、二个线程、四个线程、八个线程、十二个线程逐渐递加的模式。压测软件我们采用了wrk。在开始阶段,我们在同一台服务器运行pipy和wrk;但是在12个线程的测试中,我们需要在另外一台AMD Ryzen5 5600G台式机上运行wrk,pipy所在的Intel服务器和wrk所在的AMD台式机之间采用10G光纤连接。

Clone this wiki locally