【发布时间】:2018-09-30 01:11:32
【问题描述】:
我相信我了解写入/读取容量单位、它们的工作方式以及在 DynamoDB 中的计算方式。证明是我完全理解this 文章以及aws documentation。也就是说,我在将项目写入表时遇到了意外行为。
我有一个具有以下设置的 DynamoDB 表。最值得注意的是 5 个写入/读取容量单位
我将连接到 Raspberry Pi 的传感器的读数放入此表中,我使用 python2.7 获取并发送到 Dynamo,使用 my script。
这些项目肯定小于 1KB。它们看起来像这样:
{
"reading_id": "<current_time>",
"sensor_id": "<SENSORS_IDS[i]>",
"humidity": "<humidity>",
"temperature": "<temperature>"
}
My script 迭代传感器,从其中一个读取,然后每 5 秒使用table.put_item 将传感器的读数/项目提交给 DynamoDB。即如果从传感器读取成功,否则任意等待30s。
现在根据我的计算,我每 5 秒写入 DynamoDB 1KB 项目,这应该没问题,因为我的表设置为 5WCU = (5items*1KB)/Second write throughput。
所以我的问题是:
1。这个小负载(如果我相信正在发生的话)怎么会超过我的 5 个 WCU,如此处所示?:
2。我已经使用此设置运行了大约一年,没有进行任何更改(免费套餐于 2018 年 9 月 30 日结束)。怎么回事,几个月前甚至在免费层结束之前它就开始改变了,如下所示?:
到目前为止,我唯一的嫌疑人是time.sleep(),因为在文档中,它说:
time.sleep(秒)
在给定的秒数内暂停当前线程的执行。该参数可以是一个浮点数,以指示更精确的睡眠时间。实际的挂起时间可能少于请求的时间,因为任何捕获的信号都会在执行该信号的捕获例程后终止 sleep()。此外,由于系统中其他活动的调度,暂停时间可能比请求的时间长。
我对 python 不是很熟悉,这让我觉得它可能是我的代码中的东西。不过,这并不能解释我在今年早些时候没有遇到这个问题的事实。
任何人对上述问题的答案有任何想法,或者我应该在哪里进一步调查此问题?
注意:我在这里搜索了谷歌和其他相关问题。似乎没有一个适用于我的情况。
谢谢。
【问题讨论】:
标签: amazon-dynamodb