-
2021-01-19 03:06:00
【调优】从吞吐量角度提升数据库整体性能
不严谨的说:对的使用就是I/O操作!
因此,如果有效的了数据库系统对磁盘的I/O,那么可以说整体就会得到有效地提升。
本文尝试给出一些最常被使用到的提升系统的策略,希望起到抛砖引玉的效果。
1.尽量保证在内存中完成数据库操作
众所周知,内存的读写效率远远高于磁盘的读写效率。因此,如果能够保证尽量多的操作都在内存中完成,就是提高了系统的整体性能。
如果硬件条件允许的话,应该尽量为数据库配置尽量多的内存。不过这不是根本的方法,根本的方法应该在应用程序设计上充分考虑。
2.利用磁盘缓存进一步提升吞吐量
即便是内存够大,应用程序设计的足够优化,在中大型应用系统中一样避免不了直接读写磁盘的情况。在此基础上我们可以考虑使用存储设备本身提供的缓存功能。这样,出现物理内存和缓存都无能为力的情况就大大地减少了。
提升数据库系统的吞吐量是一个系统工程,不应仅局限在数据库层面上想问题。
3.分散磁盘I/O
在使用磁盘时,我们应该选用多块磁盘代替一块超大容量的磁盘。这样可以有效的提升磁盘并行读写性能,因此可以提升系统的整体吞吐量。
4.使用比较大的数据库Block Size
这是一条需要权衡的经验。如果选择了很大的数据库块大小,会降低对单个块上数据的读写效率,存在较大的争用。与此同时,对某些数据迁移方法上也存在一些限制。除此之外,应该说增加数据库块大小都有利于提高数据库性能。例如,较大的数据块可以保证内存中存放更多常用的数据;防止索引的level过高等。
在能够控制弊端的前提下,建议使用较大的数据库块来进一步提升系统的吞吐量。
5.控制临时表空间的使用
如果系统中存在大量的排序操作,如大量的order by字句、group by字句、索引维护及数据分析。这些都会用到大量的排序空间。当PGA中无法完成排序时就会使用到临时表空间。结果无疑是性能和吞吐量上的降低。因此,我们应该在应用设计上充分考虑到这些影响性能的因素,将排序操作控制在尽量少的范围内。
6.提升系统CPU性能
提升CPU的处理性能在某种程度上就是提升系统的吞吐量,因为单位时间内处理的有效数据增加了。
这里需要注意的是,我们不应该盲目的增加CPU个数,我们应该力图提升每颗CPU的处理能力。因为过多的CPU会给操作系统带来上的额外消耗。
7.小结
以上六条是提高系统吞吐量较常用的方法。最最根本的还是应该根据业务特点给出最优的应用设计,在充分考虑到所有影响吞吐量的因素的基础上才能给出最好的设计方案。
欢迎大家就该问题给出实际经验上补充。
Good luck.
11.01.01
-- The End --
©著作权归作者所有:来自51CTO博客作者glying的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关内容 -
基于系统聚类的营口港吞吐量影响因素分析.pdf
2021-08-20 00:01:14基于系统聚类的营口港吞吐量影响因素分析.pdf -
集装箱吞吐量及主要影响因素的计量经济分析* (2007年)
2021-04-24 14:35:33利用近年来的相关数据对港口集装箱吞吐量、港口所在城市的国民生产总值以及地方进出口商品总值进行了计量经济分析,通过二元线性回归模型对港口未来集装箱吞吐量进行预测,并对模型进行了相关检验,为港口岸线资源的... -
LTE多用户下行吞吐量性能建模分析
2021-01-19 20:17:43针对LTE系统中多用户下行吞吐量难以预测的问题,从LTE 系统的时域和频域资源出发,结合用户位置、终端类型以及下行MIMO模式等内容,分析了多用户条件下时域和频域调度算法的特点、影响因素和作用过程。并在此基础上... -
锡膏印刷工艺评估中的吞吐量与周期
2020-12-09 10:58:56电子制造业经常交换使用周期和吞吐量两个术语,事实上,它们在机器性能的量度工作中是两种不同的因素。虽然机器周期是指示机器性能的一个重要指标,但在评估工艺设备时将总吞吐量作为主要的度量标准仍然非常重要。 ... -
JMeter吞吐量误差分析
2020-12-18 23:40:31JMeter吞吐量可能是个假数据,包含了本机处理时间。首先我本身并不用JMeter进行压测,故事的缘起是因为看到了同事适用JMeter进行测试的测试报告,偶然间发现一个问题,JMeter报告中的吞吐量误差较大。结果如图:按照...JMeter吞吐量可能是个假数据,包含了本机处理时间。
首先我本身并不用JMeter进行压测,故事的缘起是因为看到了同事适用JMeter进行测试的测试报告,偶然间发现一个问题,JMeter报告中的吞吐量误差较大。结果如图:
按照经典理论模型计算吞吐量TPS或者QPS应该是等于并发线程数除以平均响应时间:
tps =Thread / AVG(t)
或者 tps = COUNT(request) / T
大家看第一个案例:平均响应时间593ms,100并发,计算得到的吞吐量为:168.63,JMeter给出的吞吐量为166.4,误差几乎可以忽略。 再看第三个案例:100并发,平均响应时间791ms,计算得到的吞吐量为126.422,JMeter给出的吞吐量为92.3,误差已经很大了。
到底是什么原因导致误差如此之大呢,经过研究同事的压测过程,发现了在第三个案例中,他使用了较多的正则匹配来校验响应返回值。那么是不是JMeter在处理返回值消耗的时间较多导致了计算吞吐量误差的呢?不由让我想起之前的文章:
那么我们通过一个实验验证一下:首先写一个脚本,我用了单线程的脚本,请求10次看结果:
看结果,平均响应时间207ms,一个并发,计算得到的结果为4.83,JMeter给出的结果4.8,符合预期。
然后我用一个Groovy后置处理器,让线程休眠500ms,然后还是单线程并发,请求10次的结果:
看结果,平均响应时间193ms,跟第一次结果差不多,JMeter给出的吞吐量值为1.5,误差巨大。
那么1.5的吞吐量是怎么来的呢?我们给193ms加上我们的等待500ms(这里是应该加上500 * 9 / 10),计算结果为1.54,跟JMeter给出的1.5符合,基本可以断定JMeter在计算吞吐量时候,把本机处理的过程也是计算在内的。
如果JMeter在整个请求过程中平均响应时间是正常统计请求发出到接收到响应的时间,但是吞吐量缺失用本机的整个线程一次循环的时间作为吞吐量计算的依据。
如果你在线程中做了别的事情,比如正则提取,参数校验,变量赋值等等都会导致吞吐量会变小。而一旦本机处理时间增加,那么压测过程中给服务端的实际压力也是比配置的要小,如果本机性能消耗过大或者某些地方发生等待,那么得到的吞吐量就可以当做一个假数据处理了。
如果发现误差较大,一定要进行结果修正,避免假数据。郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
无代码文章精选
-
基于多因素选择和误差修正的BP神经网络港口货物吞吐量预测
2021-08-19 09:40:27基于多因素选择和误差修正的BP神经网络港口货物吞吐量预测 -
基于多因素选择和误差修正的BP神经网络港口货物吞吐量预测.pdf
2021-09-25 18:10:32基于多因素选择和误差修正的BP神经网络港口货物吞吐量预测.pdf -
cdma2000 1x EV-DO网络吞吐量的研究和试验
2021-01-20 01:48:30本文重点对cdma2000 1x EV-DO RevA网络的吞吐量进行了分析,并给出了EV-DO RevA试验网吞吐量的测试结果,实测结果展现了影响EV-DO RevA网络吞吐量的主要因素以及用户的业务速率体验情况。 -
网络吞吐量详解
2019-05-05 16:52:42#吞吐量 简单的讲,对于P2P系统而言,当主机A到主机B传送一个文件,任何时间瞬间的瞬时吞吐量都是主机B接收到该文件的速率(以bps计算)。如果文件由F比特组成,主机B接收到所有F比特用去T秒,则文件传送的平均吞吐量...吞吐量
简单的讲,对于P2P系统而言,当主机A到主机B传送一个文件,任何时间瞬间的瞬时吞吐量都是主机B接收到该文件的速率(以bps计算)。如果文件由F比特组成,主机B接收到所有F比特用去T秒,则文件传送的平均吞吐量是F/T bps.
举个例子服务器通过路由器转发给客户端消息
想象比特是流体,而链路是管道,那么吞吐量应该为min{ Rc ,Rs }。如上图所示,当Rc为2Mbps且Rs>Rc,无论Rs有多大,吞吐量都是2Mbps。比如:你下载一个F=32×10的6次方个比特的文件,服务器具有2Mbps的传输速率,你有一条1Mbps的接入链路,最终的吞吐量还是1,传输该文件所需的时间是32秒。
同理,当有n个路由器的时候,吞吐量为min{R1,R2,···,Rn,Rn+1}我们今天因特网对吞吐量的限制因素通常是接入网。
比如10个服务器和10个客户端与某计算机网络核心相连,同时发生10个下载,假定这10个下载是网络中当时的唯一流量,核心中有一条所有10个下载都要通过的链路,该链路的传输速率表示为R。
一般情况下R比Rs和Rc的速度大很多,所以吞吐量其实仍然是min{Rs,Rc}
如果R和Rs(服务器传输速率)、Rc(接入网传输速率)差不多会出现怎么样的情况呢?
以两个为例,两个下载会平等划分它的传输速率,这时候每个下载的瓶颈不再位于接入网中,而是位于核心中的共享链路了,该瓶颈仅能为每个下载提供1.5Mbps的吞吐量,因此每个下载的端到端吞吐量现在减少到500kps. -
使用iPerf测试网络吞吐量
2021-05-28 16:21:03在测试网络吞吐量时,我们常见的方式都是通过远程拷贝一个文件来大致验证网络吞吐量,但是这种方式可能会受到磁盘自身吞吐量影响,所以我们采取 iperf 命令行工具可以避开受到其他因素影响。该工具可以在Linux 和 ...在测试网络吞吐量时,我们常见的方式都是通过远程拷贝一个文件来大致验证网络吞吐量,但是这种方式可能会受到磁盘自身吞吐量影响,所以我们采取 iperf 命令行工具可以避开受到其他因素影响。该工具可以在Linux 和 Windows 下通用。
一、iPerf 工具下载
- CentOS 安装
# CentOS默认 yum 源没有iperf,epel yum 源库中存在 yum install epel-release yum update yum install iperf
- Windows 安装 (直接在官方网站下载即可)
https://iperf.fr/iperf-download.php
二、iPerf 工具使用
iPerf 需要两台机器,一台充当客户端,一台充当服务端。客户端连接上服务测试。
1、TCP 服务端客户端测试
- 在第一台机器上以服务端模式启动
# iperf3 -s ----------------------------------------------------------- Server listening on 5201 -----------------------------------------------------------
- 在第二台机器上以客户端方式连接测试
# iperf3 -c 192.168.6.160 Connecting to host 192.168.6.160, port 5201 [ 4] local 192.168.1.192 port 20886 connected to 192.168.6.160 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 7.63 MBytes 64.0 Mbits/sec 56 32.5 KBytes [ 4] 1.00-2.00 sec 8.26 MBytes 69.3 Mbits/sec 22 39.6 KBytes [ 4] 2.00-3.00 sec 7.52 MBytes 63.1 Mbits/sec 35 29.7 KBytes ...... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 71.6 MBytes 60.0 Mbits/sec 430 sender [ 4] 0.00-10.00 sec 71.3 MBytes 59.8 Mbits/sec receiver iperf Done.
2、UDP 服务端客户端测试
- 服务端依旧加 -s 启动,客户端加上 -u 参数代表使用udp协议,可以测试使用 udp 连接能实现的最大吞吐量
# 加上 -u 参数可以 # iperf3 -c 192.168.6.160 -u Connecting to host 192.168.6.160, port 5201 [ 4] local 192.168.1.192 port 38898 connected to 192.168.6.160 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 116 KBytes 950 Kbits/sec 82 [ 4] 1.00-2.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 4] 2.00-3.00 sec 127 KBytes 1.04 Mbits/sec 90 ...... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 1.24 MBytes 1.04 Mbits/sec 0.289 ms 1/897 (0.11%) [ 4] Sent 897 datagrams iperf Done.
1.05Mbits/sec远低于TCP测试中观察到的值,这是因为默认情况下,iperf 对UDP带宽限制为每秒1 Mbits/sec。如果需要测试UDP网络速度,可以加 -b 参数设置带宽,将数字设置为双方硬件设置端口的最大带宽限制。
# iperf3 -c 192.168.6.160 -u -b 100m Connecting to host 192.168.6.160, port 5201 [ 4] local 192.168.1.192 port 63338 connected to 192.168.6.160 port 5201 [ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-1.00 sec 10.3 MBytes 86.6 Mbits/sec 7479 [ 4] 1.00-2.00 sec 11.4 MBytes 95.6 Mbits/sec 8253 [ 4] 2.00-3.00 sec 11.4 MBytes 95.6 Mbits/sec 8254 ...... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.00-10.00 sec 113 MBytes 94.6 Mbits/sec 0.016 ms 1346/81703 (1.6%) [ 4] Sent 81703 datagrams iperf Done.
3、Windows 使用
Windows 也是基于命令行使用,可以跟Linux混合测试,使用方式一致。从官网下载好的文件解压放进 C:\Windows 即可。
三、iPerf 参数选项
Usage: iperf [-s|-c host] [options] iperf [-h|--help] [-v|--version] Server or Client: -p, --port # server port to listen on/connect to -f, --format [kmgKMG] format to report: Kbits, Mbits, KBytes, MBytes -i, --interval # seconds between periodic bandwidth reports -F, --file name xmit/recv the specified file -B, --bind <host> bind to a specific interface -V, --verbose more detailed output -J, --json output in JSON format --logfile f send output to a log file -d, --debug emit debugging output -v, --version show version information and quit -h, --help show this message and quit Server specific: -s, --server run in server mode -D, --daemon run the server as a daemon -I, --pidfile file write PID file -1, --one-off handle one client connection then exit Client specific: -c, --client <host> run in client mode, connecting to <host> -u, --udp use UDP rather than TCP -b, --bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited) (default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) -t, --time # time in seconds to transmit for (default 10 secs) -n, --bytes #[KMG] number of bytes to transmit (instead of -t) -k, --blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n) -l, --len #[KMG] length of buffer to read or write (default 128 KB for TCP, 8 KB for UDP) --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port) -P, --parallel # number of parallel client streams to run -R, --reverse run in reverse mode (server sends, client receives) -w, --window #[KMG] set window size / socket buffer size -M, --set-mss # set TCP/SCTP maximum segment size (MTU - 40 bytes) -N, --no-delay set TCP/SCTP no delay, disabling Nagle's Algorithm -4, --version4 only use IPv4 -6, --version6 only use IPv6 -S, --tos N set the IP 'type of service' -Z, --zerocopy use a 'zero copy' method of sending data -O, --omit N omit the first n seconds -T, --title str prefix every output line with this string --get-server-output get results from server --udp-counters-64bit use 64-bit counters in UDP test packets [KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga- iperf3 homepage at: http://software.es.net/iperf/ Report bugs to: https://github.com/esnet/iperf
-
系统吞吐量、QPS、并发数、响应时间,以及提高吞吐量的思路
2020-06-23 17:12:16吞吐量是指系统在单位时间内处理请求的数量 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间 QPS(TPS):每秒钟request/事务数量 并发数:系统同时处理的request/事务数 响应时间:一般取平均响应时间 ... -
网络相关基础知识总结(一)吞吐量测试&吞吐量与带宽区别
2018-10-30 21:41:51网络吞吐量测试是网络维护和故障查找中最重要的手段之一,尤其是在分析与网络性能相关的问题时吞吐量的测试是必备的测试手段。 作为验证和测试网络带宽最常用的技术就是吞吐量测试。 二.测试方法与思想 吞吐量的... -
典型问题分析——wifi吞吐量测试和分析方法
2019-06-14 13:33:25一、手机吞吐量测试方法 准备工具:手机侧安装Magic Iperf软件;PC侧安装iperf.exe 1.上行吞吐量测试方法 手机作为client端,PC为server端 2.下行吞吐量测试方法 手机作为server端,PC作为client端 TCP的只... -
MySQL的吞吐量
2018-04-15 21:12:43MySQL 的QPS吞吐量或者说TPS与很多因素有关,例如CPU、内存以及硬盘等。 《高性能MySQL》第三版 1.5小节对各个版本的MySQL进行了测试,其结果如下。 测试机器 测试机器Cisco UCSC250 内存384GB 存储引擎是InnoDB... -
峰值速率、系统容量、吞吐量、带宽之间的区别
2019-12-17 09:15:03这样,因为受各种低效率因素的影响,所以由一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发送数据。 网络中的数据是由一个... -
如何评估软件系统的吞吐量
2019-11-15 23:30:38在实践中经常会遇到需要进行系统性能优化的场景,通常系统性能优化的主要目标是提高系统的吞吐量,那么,系统的吞吐量与哪些因素有关呢?如何评估?是否有方法论可循?作为一名进阶路上的工程师,这三个问题你可曾... -
网络数据小包吞吐量测试与分析
2021-05-18 08:46:27摘 要: 吞吐量是评价网络平台性能的重要指标,是网络用户关注的焦点,对于不同帧长的以太网数据包,网络平台的处理能力存在较大差异,主要体现在处理64B和128B小包数据时,吞吐量有明显的降低。针对这一问题,以... -
简版 区块链本质论(3): 性能本质之吞吐量
2019-10-30 18:23:22比特币系统,吞吐量低的原因是因为,其最初上线的时候,顺应当时的底层互联网的通讯能力,设定了每十分钟出一个块,每个块大小为1M字节。然后每个交易差不到需要200到300个字节,然后综合起来就是这个大概7几个交易... -
【流量发起】吞吐量上不去的问题
2019-10-08 21:02:33单肉鸡线程数:5+15 客户端肉鸡数:11 可以看到请求处理的速度又猛增为10200,通过以上实验可以发现,主要的影响因素有: 查看结果树 中控端网络环境 断言信息 聚合报告信息 那如果需要更大的吞吐量时应该怎么处理?... -
系统吞吐量
2016-01-24 15:32:23一、系统吞吐量的定义 系统吞吐量指的是系统在单位时间内可处理的事务的数量,是用于衡量系统性能的重要指标。...二、影响系统吞吐量的因素 影响系统吞吐量的因素很多,包括并发数和系统资源(... -
带宽,速率,吞吐量区别
2020-10-28 18:54:17吞吐量受速率和带宽影响,速率是本身因素(固定不变),带宽为环境因素(固定不变)。举个例子,我能一个打10个(速率),但对面只有5个人(带宽),所以你最多能打败5个(吞吐量),状态不好被5个吊着打(吞吐量)。 补充一下... -
提高 Kafka 吞吐量
2019-07-03 21:51:38提高 Kafka 吞吐量1、了解分区的数据速率,以确保提供合适的数据保存空间2、除非您有其他架构上的需要,否则在写 Topic 时请使用随机分区3、如果 Consumers 运行的是比 Kafka 0.10 还要旧的版本,那么请马上升级4、... -
【计算机网络】吞吐量与瓶颈链路
2022-04-22 00:56:31除了 时延 和 丢包,计算机网络中至关重要的性能测度是端到端的 吞吐量。 对于吞吐量的概念,我们以以下四种情况进行分析。 情况一: -
网络随机时延及其影响因素的研究
2021-04-06 07:21:38随着网络技术的迅速发展...利用OPNET软件对控制网络进行模拟和仿真,对网络中时延、吞吐量等参数进行测量.通过改变网络的结构以及相关参数设置,使测量结果产生变化,通过对比测量结果找出与时延随机性相关的因素. -
【计算机网络-带宽与吞吐量】
2020-08-31 20:10:49吞吐量=单位时间内的发送量=字节*8bit/时间段 信道利用率=吞吐量/带宽 一、带宽 1.概念:数据带宽是正在使用的数据传输速率的同义词,定义了一个数据链路的最大容量 例如 一个10Mbps的铜线局域网不能承受速率 -
TPS、并发用户数、吞吐量关系
2020-11-05 17:41:36TPS、并发用户数、吞吐量关系 本文主要描述了在性能测试中,关于TPS、并发用户数、吞吐量之间的关系和一些计算方法。 loadrunner TPS 目录[-] 一.系统吞度量要素: 二.系统吞吐量评估: 软件性能测试的基本概念和... -
性能测试-系统吞吐量及用户并发量
2018-11-16 09:41:13一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降... -
MEIL――一种高吞吐量的无线网状网路由协议 (2007年)
2021-05-18 04:18:42通过引入链路干扰度、节点负载度等概念,综合考虑了无线信道的丢包率、链路干扰以及节点的负载等多种重要因素,来确定路由判据,选择链路质量好、干扰小、负载轻的路径来传输数据,有效地提高了网络吞吐量....