python - Locust各种http client 测试

本文是关于Locust使用不同HTTP客户端进行性能测试的对比,包括locust自带的requests、http.client、geventhttpclient、urllib3、go的net.http和fasthttp,以及Jmeter。测试结果显示,go fasthttp性能最佳,其次是go net.http和python的geventhttpclient。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python - Locust各种http client 测试

Max.Bai
2019-08

Table of Contents

python - Locust各种http client 测试

0x00 前言

0x01 locust自带client

0x02 http.client

0x03 geventhttpclient

0x04 Urllib3

0x05 go net.http

0x06 go fasthttp

0x07 Jmeter

0x08 结果


0x00 前言

Locust是一个python的分布式性能测试工具,可以通过python编程实现各种协议的压测,详细查看locust官网 https://locust.io/
经过长时间的使用大家肯定会发现,高并发的时候locust还是不错的选择,但是需要高压力的时候,经常觉得locust压力不够(资源有限)
今天测试的目的是测试各种http client的性能在locust中的表现。
涉及的client都有:
python  http.client
python  geventhttpclient
python  urllib3
go      net.http
go      fasthttp
java    Jmeter

测试的服务端是4cpu 的Nginx服务。
客户端是4 cpu centos6.5
下面的测试没有记录服务器的消耗,主要是服务器没有到瓶颈,客户端已经到了瓶颈,网路卡住了。

0x01 locust自带client

locust自带client是requests, 功能强大,但是性能就一般了。
代码:

#!/usr/bin/env python
#coding:utf-8

from locust import HttpLocust, TaskSet, events, task


class WebsiteUser(HttpLocust):
    host = "http://200.200.200.230"
    min_wait = 0
    max_wait = 0
    class task_set(TaskSet):

        @task
        def index(self):
            self.client.get('/')

if __name__ == '__main__':
    user = WebsiteUser()
    user.run()

10 user  1 slave  使用中客户端cpu使用100%

30 user  2 slave  使用中客户端cpu使用100%

 

0x02 http.client

python3 中的http.client, 使用晦涩,但是性能比requests 确实高了不少。
代码:

#!/usr/bin/env python
#coding:utf-8
import time
# import StringUtils
import random
import json
import requests
from threading import Lock
from requests.exceptions import HTTPError, Timeout, ConnectionError, TooManyRedirects, RequestException
from locust import HttpLocust, TaskSet, events, task
import http.client

class WebsiteUser(HttpLocust):
    host = "200.200.200.231"
    min_wait &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值