# gmeter **Repository Path**: cxy-an/gmeter ## Basic Information - **Project Name**: gmeter - **Description**: Web API 压力测试工具,拥有极好的并发能力。相比于jmeter,使用更少的计算机资源。相比于apache ab,上手更容易,输出的执行结果更易阅读。同时支持对请求连接中各阶段(查找DNS,创建连接,发送请求,获取响应等)的耗时进行统计。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2019-02-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gmeter ## 项目介绍 压力测试工具 ## 安装教程 1. 在[release](https://gitee.com/sunshao/gmeter/releases)中,下载对应系统的可执行文件压缩包 2. 解压 3. 赋予执行权限,chmod +x gmeter 4. 执行./gmeter 即可看到帮助信息 ## 快速使用 #### 例子: 1. 请求指定url一次,查看请求耗时: 执行命令: ./gmeter -u "https://***.com/" 2. 并发请求指定url,查看最大,最小,平均请求耗时: 执行命令: ./gmeter -u "https://***.com/" -q 1000 -t 10 说明: -q 指定QPS为1000,即1秒钟,请求1000次。 -t 持续时间设置为10秒钟 3. 请求指定url一次,查看请求过程中各阶段耗时: 执行命令: ./gmeter -u "https://***.com/" -tr 说明: -tr 开启请求过程中各阶段耗时统计 4. 并发请求指定url,查看请求过程中各阶段的最大,最小,平均耗时: 执行命令: ./gmeter -u "https://***.com/" -tr -q 1000 -t 10 5. 并发请求指定url,查看请求过程中各阶段的最大,最小,平均耗时,并统计网络使用情况: 执行命令: ./gmeter -u "https://***.com/" -tr -q 1000 -t 10 -n ## 注意事项 #### linux系统设置 ###### 1. 由于工具是并发请求外部url,建议开启linux net.ipv4.tcp_tw_recycle 自动回收TIME-WAIT,其他参数自行选择使用 编辑/etc/sysctl.conf文件,追加如下内容: |参数|值|说明| | - | :-: | - | |net.ipv4.tcp_tw_reuse|1|表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;注意,这个参数可能会造成测试请求过程中各阶段耗时部分指标没有意义,比如查找DNS和创建连接耗时。 | |net.ipv4.tcp_tw_recycle|1|表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。| |net.ipv4.tcp_fin_timeout|30|表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。| ###### 2. 参数-s的设置 首先这个参数决定了,在同一时刻,程序发出的请求个数(与QPS无关)。 由于不同的机器性能差异较大,为了让用户得到一个相对准确的压测结果, 所以将此参数单独提取出,方便用户根据自己机器的性能,设置合理的值。 -s参数的取值,取决于当前计算机性能。那怎么来得到一个合适的值呢? (1) 请使用一个较小的QPS设置,持续发送5~10秒,保存得到的结果。 命令参考: ./gmeter -u "http://***.com" -q 2 -t 5 (2) 然后 -q参数 设置一个略大的值比如5000,10000,保持 -q 的值不变。 逐步增加-s参数的值(默认3), 如果结果和第一步保存的结果,各项耗时指标 相差非常小,可以继续加大-s的值, 直到你觉得和第一步统计结果的差距是可以接受的最大值了。 命令参考: ./gmeter -u "http://***.com" -q 5000 -t 10 -s 5 ./gmeter -u "http://***.com" -q 5000 -t 10 -s 10 ./gmeter -u "http://***.com" -q 5000 -t 10 -s 100 ###### 3. 压测时,查看实时的耗时输出信息,如果进程每完成一个QPS都有休息时间,说明当前设置的QPS值,还没达到本机的极限,或目标服务器的极限。 理想的QPS值,应该是每个QPS正好耗时1000毫秒,或1000毫秒多一些,但不高于/或极少2000+毫秒。 ###### 4. windows下命令行示例: gmeter.exe -u "https://www.baidu.com" -q 10 -t 5