linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...

压测工具其它有用工具

在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能。好的压测工具有很多,可能的功能如下:

发起压力

监控性能

监控系统使用率

生成报告

基准测试无非就是看系统能力是否达到对系统预期的能力。如果一款系统拥有较高的Linpack分数,但它未必是理想的文件服务器。需要记住的是,基准测试不可能模拟出终端用户的行为,因为他们是不可预测的。基准测试不会告诉你,在用户访问他们文件的时候或者备份开始的时候,服务器会做什么反应。一般来说,基准测试应该遵循如下几个原则:为服务器负载做基准测试:服务器系统和典型的PC完全不同。为了利用系统的SMP能力和模拟一个真实的多用户环境,服务器测试使用多线程。PC打开一个网页浏览器的速度可能比高端服务器更快,但是服务器打开1000个网页浏览器的速度会比PC快很多。 模拟预期的负载:所有的基准测试都有不同的配置选项,我们应该朝着未来预期运行的负载方向定制测试。如果应用需要低延迟的磁盘,那么强大的CPU性能也没什么大的用处。

隔离测试系统:如果要对系统进行基准测试,首先要把它尽可能的从其它负载中隔离。在系统上运行一个top命令也会极大的影响基准测试结果。

结果平均:即使你试着隔离测试系统,可能还会有未知的因素在压测时影响系统性能。经验表明,至少执行三次测试,然后将结果平均,以保证偶然因素不会影响全面分析。

下面是基于以上标准选择的工具:在Linux上测试:Linux是基准测试的目标

能运行在所有的硬件平台上测试:由于IBM提供3种不同的硬件平台(把IBM System p和IBM System i看做都是基于IBM POER架构),所以选择不用做太多修改就能在所有架构上使用的工具很重要。

开源:Linux运行在很多平台上,如果需要到处运行,就可能需要源代码。

文档全面:必须了解你用来做性能测试的工具,所以你需要文档。在使用某工具之前,先了解它的理念、设计和细节,以确定它是否真的合适。

维护中的:如果使用已经停止维护的软件,可能无法跟上最新的技术和标准,导致错误的结果。

广泛使用的:你很方便找到相关信息。

使用简单的:简单更好用。

能产生报告:具有报告功能能极大的减轻性能分析工作。

lmbenchLMbench是一套微测试工具,用来分析不同操作系统设置,比如SELinux是否启用。LMbench可以用来测试操作系统的各个方面,如上下文切换、本地通信、内存带宽、文件操作等。LMbench使用起来很简单,仅有三个重要命令: + make results:第一次启动LMbench时,它会提示一些操作系统的信息,还有要执行哪些测试。 + make return:在完成初始化配置和第一次运行LMbench之后,使用make return命令,重复make results时的配置进行测试。 + make see:在至少三次运行之后,可以使用make see命令查看结果。可以使用图表的方式展示和分析。 LMbench项目地址是:http://sourceforge.net/projects/lmbench/

iozone

IOzone是一个文件系统测试工具,可以用它模拟各种磁盘访问方式。由于IOzone的配置很详细,所以可以用来精确的模拟目标文件系统的负载。IOzone可以使用不同的块大小写入各种大小的文件。

IOzone有一种非常好用的自动测试模式,方便测试者自定义各种测试行为,如文件大小、I/O大小和访问方式等等。如果文件系统是为数据库服务做准备的,应该重点测试大block size的大文件随机访问,而不是小block size的大文件。IOzone重要的选项如下:-b 让IOzone以微软Excel兼容格式保存成电子表格。

-C 显示每个子进程的输出(用来检查是否每个子进程都在运行模拟程序)

-f 告诉IOzone写入文件的地方

-i 使用这个选项指定要运行什么测试。使用-i 0 指定第一时间写入到测试文件。使用-i 1是流式读,-i 8是混合随机访问负载。

-h 显示帮助

-r 指定测试类型和I/O大小。测试文件大小应该尽量和目标系统以后的工作负载相似,以便测试出真实的负载能力。

-k 使用内核2.6的异步I/O特性。经常用在数据库服务器的测试,例如IBM的DB2。

-m 如果目标应用使用多个内部缓冲,那么可以使用-m选项模拟这个行为。

-s 指定测试文件的大小。对于异步文件系统(大多数文件系统的默认挂载选项),IOzone应该使用至少两倍内存大小的测试文件才能真正衡量出磁盘性能。测试文件大小可以MB或者GB为单位,直接在大小后面跟上m或者g的单位即可。

-+u 实验性的选项。可以衡量在测试期间处理器的使用率。注意:保存在异步文件系统,并且小于系统内存大小的测试文件,只能测试内存吞吐量,而不是磁盘子系统的性能。所以,你的目标文件系统应该使用sync选项挂载,并且测试文件是系统内存的至少两倍。

如下的例子展示了使用IOzone来衡量挂载在/perf目录上的磁盘子系统的随机读性能,测试文件大小为10GB,32KB的block size。./iozone-b results.xls-R-i0-i2-f/perf/iozone.file-r32-s10g

最后,可以把获得的结果导入到电子表格中,并且转换为图形格式。使用图形输出数据可以更简单的分析大文件数据并且看出趋势。下图就是上面的命令可能的一种输出情况。

e81176d4f6e8b3d1d4717038429785ba.png

如果IOzone的文件大小和系统内存或者缓存一致,可以用来获取缓存和内存的吞吐量。应该注意的是,由于文件系统开销,IOzone只会获得70-80%的系统能力。

netperf

nerperf是专注于TCP/IP网络性能的测试工具。它支持UNIX的socket和SCTP测试。

netperf基于C/S(client-server)模型设计。netserver运行在目标服务器上,netperf运行在客户机上。netperf控制netserver,netperf把配置数据发送到netserver,产生网络流量,从一个独立于测试连接的控制连接获取netserver的结果。在测试过程中,在控制连接中没有数据交流,所以不会对结果产生影响。netperf压测工具也有提供报表的功能,包括CPU使用率。本书写作期间,稳定版本是2.4.3(本书翻译时候,netperf稳定版是2.6.0)。

netperf能生成多种类型的流量。基本分为两种:大块传输数据的流量和请求/响应的流量。netperf一次只使用一个socket。在下一版本的netperf(netperf4)中,将会全面支持并发会话。当前,我们可以使用如下办法进行多会话的测试。大块数据传输(Bulk data transfer)

大块数据传输能力是网络测试中最常用的指标,通过一秒钟传送的数据量来衡量。它可以模拟大文件传输,例如多媒体流和FTP的数据传输。请求/响应(Request/response type)

模拟请求/响应的流量,衡量指标是一秒钟完成的请求响应次数。请求/响应是最常见的在线应用流量,例如web、数据库、邮件服务、文件服务(中小文件),目录服务。在真实的环境中,会话的建立终止和数据交换的方式是一样的。为了模拟它,需要使用到TCP_CRR类型。并发会话(Concurrent session)

在当前的稳定版中,netperf还不真正支持并发会话测试,但是,我们可以以如下的方式开启多个netperf实例:foriin‘seq110‘;donetperf-t TCP_CRR-H target.example.com-i10-P0;done

我们可以看看如下一些有用和有趣的选项,

全局选项:-A 设置本地接收和发送缓冲的调整

-b 爆发大量流测试包

-H 远程机器

-t 测试流量类型TCP_STREAM 大量数据传输测试

TCP_MAERTS 和TCP_STREAM很像,只是流的方向相反

TCP_SENDFILE 和TCP_STREAM很像,只是使用sendfile(),而不是send()。会引发zero-copy操作

UDP_STREAM 和TCP_STREAM很像,只不过是UDP

TCP_RR 请求响应报文测试

TCP_CC TCP的连接/关闭测试。不产生请求和响应报文。

TCP_CRR 执行连接/请求/响应/关闭的操作。和禁用HTTP keepalive的HTTP1.0/1.1相似。

UDP_RR 和TCP_RR一样,只不过是UDP。

-l 测试长度。如果是一个正值,netperf会执行testlen秒。如果值为负,netperf一直执行,直到大量数据传输测试中交换testlen字节,或者在请求/响应次数达到testlen。

-c 本地CPU使用率报告

-C 远程服务器CPU使用率报告在某些平台上,CPU使用率的报告可能不准确。在性能测试之前,请确保准确性。-I 这个选项是用来维护结果可信度的。可信级别应该设置为99%或者95% 。为了保证结果可信度级别,netperf会把多次重复测试。例如-I 99 5,代表在100次的99次中,测试结果和真实情况有5%(+-2.5%)的浮动区间。

-i 这个选项限制了最大和最小的重复次数。-i 10 3表示,netperf重复同样的测试,最多10次,最少3次。如果重复次数超过最大值,结果就不在-I指定的可信任级别中,将在结果中显示一个警告。

-s , -S 修改发送和接收的本地和远程缓冲大小。这个会影响到窗口大小。

TCP_STREAM,TCP_MAERTS,TCP_SENDFILE,UDP_STREAM的选项-m , -M 指定传给send()和recv()函数的缓冲大小。分别控制每个调用的发送和接收大小。

TCP_RR,TCP_CC,TCP_CRR,UDP_RR的选项:

-r ,-R 分别指定请求和响应的大小。例如-r 128,8129意思是netperf发送128字节包到netserver,然后它响应一个8129字节的包给netperf。

如下是netperf的一个TCP_CRR的测试

fc4e86cbb92a03ac7393a96e0f8e262e.png

当执行性能测试的时候,最好的做法是使用netperf的简单测试脚本。通过修改脚本的变量,你可以定制自己的测试。脚本的路径在你的netperf包的doc/example/目录下。

其它有用工具

这里还有其它一些有用的测试工具。记住,你必须了解压测工具的特性,然后才能选择你需要的工具。工具主要功能NetBench文件服务器测试,运行在Windows上

ttcp简单的网络测试

ab (Apache Bench)简单的web服务器测试,包含在Apache服务器中http://httpd.apache.org/

Apache Jmeter主要用来web服务器性能测试。也支持其它协议,例如SMTP,LDAP,JDBC等,有很好的报告功能http://jakarta.apache.org/jmeter/

fsstone,smtpstone

nhfsstone网络文件系统测试,包含在nfs-utils包中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

PyQt5动态(可拖动控件大小)布局控件QSplitter简介PyQt还提供了特殊的布局管理器QSplitter。它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用户拖动子控件的边界控制子控件的大小,并提供一个处理拖曳子控件的控制…

斐讯n1刷linux服务器,斐讯N1刷机Linux(Armbian)

一、降级N1打开ADB链接开始降级。降级后版本号不变二、第三方固件依然是上面的链接(官改v2.2)USB双头线链接HDMI借口最近的USB和电脑的USB进入线刷模式(电视不会显示任何东西,但是电脑会显示设备已连接)。打开上面的刷机工具刷入官改v2.2。理论刷完后重启即可进入安…

python 四足机器人运动学_撸了个四足机器人

纯粹分享一下踩过的坑…… Robot,男人的浪漫~组装完成后,就是这样子了:1 )主控:Raspberry Pi Zero W,1 个对于新手,这是最容易上手的硬件了。软件方面有很好的支持,资料非常丰富。例…

delphi开发LINUX程序,DELPHI开发LINUX包

DELPHI开发LINUX包我们知道,有了包的存在,开发插件架构的程序,才成为可能 。DELPHI在WINDOWS里面的包的扩展名是.bpl。在LINUX里面的包的扩展名是.o。怎样在LINUX里面加载.o的包?不论加载WINDOWS的包,还是加载LINUX的包…

python3多进程写时拷贝_python多进程实现复制文件

[Python] 纯文本查看 复制代码多进程实现复制文件步骤:(1)获得源文件夹路径;(2)获取源文件夹下各文件的文件名(3)获得目标文件夹(4)复制文件(文件夹不能复制)新增内容:复制一个文件夹下的所有文件知识点:(1)os模块:1&g…

在linux cuda安装教程,Ubuntu20.04安装cuda10.1的步骤(图文教程)

安装前准备cuda的主要用途是深度学习,而目前主流的深度学习框架tensorflow2最高支持cuda 10.1,因此本文讲解在ubuntu 20.04系统上安装cuda 10.1的主要过程。首先要查看你的nvidia显卡驱动是否支持cuda10.1版本。在终端执行以下命令:nvidia-sm…

9050 端口 linux 进程,Linux中查看某个端口占用情况

Bridge模式——对象结构型模式今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...如何在终端实时展现git分支在微博上看到ghosTM…

代码重构的方法和经验_关于烂代码优化重构的几点经验

是否已经读过前面两篇关于烂代码和好代码的文章?这些让人抓狂的烂代码,你碰到几种?什么才是好代码、高质量代码?工作中,总会不可避免的接触到烂代码,就像之前说的,几乎没有程序员可以完全避免写…

moodle环境安装linux,在Ubuntu 18.04/Debian 9上安装Moodle的步骤

本文介绍在Ubuntu 18.04/Debian 9系统上安装Moodle的的详细步骤,需要准备PHP、Apache/Nginx Web服务器及MySQL/MariaDB数据库。简介Moodle是一个免费的开源学习管理系统,用PHP编写,并在GNU通用公共许可证下发布。从Moodle创建学习课程&#x…

python分类下取得所有子类_如何找到给定名称的类的所有子类?

新样式类(即从object,这是Python 3中的缺省值。__subclasses__方法,该方法返回以下子类:class Foo(object): passclass Bar(Foo): passclass Baz(Foo): passclass Bing(Bar): pass以下是子类的名称:print([cls.__name__ for cls i…

linux路由表生成,路由表(FIB)内容的生成(一)

前面已经讲到过路由表的初始化,路由表是一个比较复杂的数据结构,一下子并不好理解。下面我们通过模块初始化时Linux的notify机制所触发的网络设备事件回调myfib_netdev_event,来逐步分析如何向FIB插入路由项,来进一步理解FIB。每一…

python调用库函数用ecb模式加密图片_AES中ECB模式的加密与解密(Python3.7)

本文主要解决的问题本文主要是讲解AES加密算法中的ECB模式的加密解密的Python3.7实现。具体AES加密算法的原理这里不做过多介绍,想了解的可以参考文末的参考链接。主要解决了两个问题:在Python3.7版本下,所依赖包的安装问题。(有一些博客时间…

linux跨版本升级,深度Deepin系统支持跨版本升级

很多以前安装有深度Deepin系统的用户提问,我使用的是Deepin 15.4或者是15.5、15.6版本能不能升级到Deepin 15.8,答案是能。深度Deepin系统是支持跨版本升级的,而不限于从Deepin 15.7升级到Deepin 15.8。在控制中心的更新选项中如果有新系统版…

正态分布概率表_三、统计概率思维

一、误差思维(只要有估计,就会有误差)1.误差永远存在,并且不可避免。2.多次测量用平均值的统计方式取得结果,尽量避免偶然因素的影响。二、置信区间(误差范围)1.统计学最核心思想:用…

linux qt sql,linux qt联接sqlserver怎么配置服务器

也可以通过如下代码测试qt5是否支持SqlServer#include #include #include #include int main(int argc, char* argv[]){QApplication app(argc, argv);qDebug() << "Available drivers:";QStringList drivers QSqlDatabase::drivers();foreach(QString driver…

高等数学同济第七版上册电子版_高等数学同济第七版(上册)第一章答案

第一章答案(猴博土高数不挂科视频可以联系公众号获取关于本书&#xff1a;《高等数学(第七版)》是同济大学数学系在第六版的基础上修订的。第七版修订遵循“坚持改革、不断锤炼、打造精品”的要求&#xff0c;对第六版中个别概念的定义&#xff0c;少量定理、公式的证明及定理的…

linux性能记录,Linux性能记录

说到一台Linux服务器的性能&#xff0c;大部分人关注的指标如下&#xff1a;CPU利用率&#xff0c;CPU LOAD&#xff0c;内存利用率&#xff0c;磁盘I/O等待率&#xff0c;网络带宽使用率。Jmeter作为性能测试的强大工具&#xff0c;在其插件JMeterPlugins-Standard和JMeterPlu…

python之路day4_python之路day4

1很多人的努力都是浅尝辄止的2.很多牛逼的人还在努力3.半年会后牛逼的转身冒泡算法&#xff1a;for n in range(1,len(li)):for m in range(len(li) -n) :num1 li[m]num2 li[m1]if num1 > num2:temp li[m]li[m] num2li[m1] tempprint liha 配置思路#!/usr/bin/env pyth…

linux gpu 电脑推荐,System76推出具有RTX GPU更大显示器的Oryx Pro Linux笔记本电脑

美国计算机制造商System76今天推出了更新版的Oryx Pro旗舰Linux笔记本电脑&#xff0c;采用了英特尔和Nvidia的最新技术&#xff0c;以及更大的显示器。Oryx Pro笔记本电脑已经更新了更新的图形和升级组件。继最近更新的System64的“Darter Pro”和“Serval WS”Linux笔记本电脑…

linux 管道 top,linux IPC总结——管道

管道管道是unix ipc的最古老形式&#xff0c;是一种在内存中的特殊文件&#xff0c;只能在具有公共祖先的进程之间使用(即父子进程&#xff0c;兄弟进程)。管道由pipe函数创建#include int pipe(int fd[2])fd[1]写&#xff0c;fd[0]读。单个进程的管道几乎没有任何用处&#xf…