performance - 如何在两个版本不同的Aerospike群集3.8和3.14之间比较服务器端的延迟和超时?

标签 performance timeout latency aerospike asgraphite

我有两个运行社区版本的Aerospike集群-


服务器具有以下组合的旧群集-
在磁盘中存储数据+ i2.2xlarge实例+ Aerospike构建版本3.8.2.3
服务器具有以下组合的较新集群-
在内存中存储数据+ r3.4xlarge实例+ Aerospike构建版本3.14.1.1 +使用分区树小枝


我想比较它们的服务器端延迟和超时。
我通过以下命令启用了Aerospike内置的石棉守护进程-

python /opt/aerospike/bin/asgraphite --start --prefix aerospike.stats -g <URL> -p <port>


我在石墨控制台中看不到针对旧集群的延迟统计信息(请参见屏幕截图中的突出显示)-

enter image description here

另外,我对于应该考虑哪个延迟统计信息感到困惑。
以下统计信息适用于较旧的群集-

Metric                               Value observed on one node
batch_index_timeout                  0
batch_timeout                        0
err_tsvc_requests_timeout            ~80K
stat_rw_timeout                      ~500K


批处理统计信息显示为0,正如预期的那样,因为我们没有进行任何批查询。高于3.9的新群集没有err_tsvc_requests_timeoutstat_rw_timeout指标。

The relevant manual page of aerospike针对已过时的指标进行提及-


从3.9版开始,请参考名称空间中的更具体的统计信息
水平。


不知道是那些。

开放赏金

metrics reference manual针对指标stat_rw_timeout提及-


从3.9版开始,请参考名称空间中的更具体的统计信息
水平。


我希望对石墨Web控制台中的名称空间值也能体现出同样的效果,但是我所能看到的只是以下内容-ops_per_sec,over_1ms,over_64ms等。

enter image description here

所以,基本上我现在正在寻找两件事-


某些统计信息/指标移到名称空间级别的确切含义。如何在石墨Web控制台中查看它,完全可以看到它。
有关在两个版本中选择适当的延迟和超时指标的更多指示。我正在研究通过PHP客户端API函数读写Aerospike缓存键的常见用例-

Aerospike-> get()
Aerospike-> put()


更新2

超时-最后,我能够在新的构建版本中找到与重组的超时相关的参数,如答案https://stackoverflow.com/a/45244090/351903中所述。
但是,值client_write_timeout等是累积性的,很难在群集之间进行比较,因为日志记录可能早于群集之一开始的。最好有一个瞬时超时指标。

enter image description here

更新3

延迟-由于我没有在低于3.9的构建版本的石墨Web控制台中获得延迟统计信息,因此我计划使用asloglatency并将统计信息转储到两个构建版本的石墨服务器。
为了以图形方式统一比较延迟,我计划-


设置一个cron,每5分钟运行一次。
运行asloglatency命令以收集2分钟持续时间的以下延迟统计信息,两个版本的最近5分钟开始-


-%的平均值大于1毫秒,8毫秒和64毫秒以及每秒操作数。
最大值-%大于1 ms,8和64 ms和每秒的操作数。



版本> 3.9的Asloglatency命令

asloglatency -N FC -h write -f -0:05:00 -d 0:60:00
asloglatency -N FC -h read -f -0:05:00 -d 0:60:00


版本<3.9的命令

asloglatency -h writes_master -f -0:05:00 -d 2:00
asloglatency -h reads -f -0:05:00 -d 2:00


注意-我通过运行asgraphite命令获得了新构建的延迟统计信息-

python /opt/aerospike/bin/asgraphite --start -g <domain> -p <port>


但是我不确定在石墨控制台的{HOSTNAME}.latency下新建时会记录上述哪些统计信息-平均或最大值。在指标参考手册中找不到相同的任何文档。
enter image description here

另外,对于旧版本,上述命令在石墨控制台中未显示延迟状态。

希望使用asloglatency导出的统计信息在两个构建版本中是统一的。

通过公开赏金-寻找确认是否可行/将是我尝试找出/指出更简便的方法的最佳方法。

更新4

1.超时

通过在通过记录stat_rw_timeout获得的图上应用derived(),我能够在旧版本上获得瞬时超时-

http://<domain>/render?width=1700&from=-6h&until=now&height=900&target=derivative(aerospike.old_statsip-10-146-210-31.service.stat_rw_timeout)&title=old_latency_cumulative_derivative&hideLegend=false&_salt=1367201670.479&yMax=&_uniq=0.985620767407021


enter image description here

但是,即使client_read_success显示值,新构建的超时也始终显示0-
enter image description here

2.延迟

看起来下面的asgraphite命令在两个构建版本中都记录了延迟,因此我将不需要使用Update 3中提到的asloglatency来完成所有这些工作-

python /opt/aerospike/bin/asgraphite -l 'latency:' --start --prefix aerospike.temp.old_trial1 -g <graphite server domain> -p <port>


我监视的值是-

新建-

aerospike.temp.new_trial2ip-10-13-215-20.latency.FC.read.over_1ms
aerospike.temp.new_trial2ip-10-13-215-20.latency.FC.write.over_1ms


旧版本-

aerospike.temp.old_trial1ip-10-182-71-216.latency.reads.over_1ms
aerospike.temp.old_trial1ip-10-182-71-216.latency.writes_master.over_1ms


这是从图中观察到的结果-


新版本的读取延迟-始终为0。
在新版本上写入延迟-仅一个峰值,否则始终为0。
对旧版本的读写延迟-一致的数据。


更新5

我只想让我比较正确的度量标准,以跨构建版本比较延迟和超时。有人可以指出我一些与之相关的文档吗?

延迟-我已经提到了我在上面的更新4中比较的值。以下是石墨网络控制台中的层次结构-

enter image description here

超时-度量参考手册中没有直接提及stat_rw_timeout在3.9版中分为client_read_timeoutclient_write_timeout的情况。有人可以确认吗?

我有上述担忧/疑问,因为我的观察结论如下:

enter image description here

最佳答案

如您所述,最好的资源是Aerospike文档的“部署”部分中的metrics reference manual。找到较旧的,已弃用的统计信息,该说明将告诉您什么是等效的release 3.9度量标准。

Stats and Benchmark Migration Guide for the 3.9 Release详细介绍了不同的统计信息。

专门针对延迟,Histograms from Aerospike Logs具有3.9之后的延迟直方图的细分,而pre-3.9 latency histograms在另一篇文章中。

关于performance - 如何在两个版本不同的Aerospike群集3.8和3.14之间比较服务器端的延迟和超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236853/

相关文章:

java - 数据库存储与文件存储

c++ - boost::io_service post 方法是否会导致新的分配?

java - 从 PHP 中强制终止失控的 java exec

latency - "top percentile"或基于 TP 的延迟是什么意思?

performance - 使用 TCP Acks 来测量服务器的延迟?

c - 通缉 : Very Fast Linked Lists in C

java - 与 "iteration is linear in the sum of the number of entries and the number of buckets"混淆

angular - 如何处理 RxJs 超时完成 - Angular HttpClient

php - 为特定函数/代码块(不是整个脚本)设置超时?

delay - 抓取新网络摄像头图像时的 OpenCV VideoCapture/V4L2 延迟