Amazon dynamodb 如何解决dynamodb的吞吐量错误?
回溯(控制台的最后输出):Amazon dynamodb 如何解决dynamodb的吞吐量错误?,amazon-dynamodb,Amazon Dynamodb,回溯(控制台的最后输出): 文件“batchpy.py”,第61行,在 对象批次_w1() 文件“batchpy.py”,第49行,在batch_w1中 批处理放置项目(数据=项目) 文件“/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/table.py”,第1641行,在__ self.ressend_未处理() 文件“/usr/local/lib/python2.7/dist packages/boto/dynamodb2/tabl
文件“batchpy.py”,第61行,在
对象批次_w1()
文件“batchpy.py”,第49行,在batch_w1中
批处理放置项目(数据=项目)
文件“/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/table.py”,第1641行,在__
self.ressend_未处理()
文件“/usr/local/lib/python2.7/dist packages/boto/dynamodb2/table.py”,第1718行,未经处理
resp=self.table.connection.batch\u write\u项(批处理数据)
文件“/usr/local/lib/python2.7/dist packages/boto/dynamodb2/layer1.py”,第420行,在批写入项中
body=json.dumps(参数))
文件“/usr/local/lib/python2.7/dist packages/boto/dynamodb2/layer1.py”,第2842行,在make_请求中
retry\u handler=self.\u retry\u handler)
文件“/usr/local/lib/python2.7/dist-packages/boto/connection.py”,第954行,在
状态=重试\u处理程序(响应、i、下一个\u睡眠)
文件“/usr/local/lib/python2.7/dist packages/boto/dynamodb2/layer1.py”,第2876行,在“重试”处理程序中
响应。状态、响应。原因、数据)
boto.dynamodb2.exceptions.ProvisionedThroughPutteExceedeDexception:ProvisionedThroughPutteExceedexception:400错误请求
{U'Meult:U'消息:超出了配置表的配置吞吐量级别。考虑使用可更新的API“U”类型增加您的配置级别:U'COM.AxoNavaStudioDB。
有两种方法可以解决此问题:
DynamoDB对读取和写入都使用一个已配置的吞吐量模型。这意味着,如果应用程序尝试执行的读写次数超过了分配给表的次数,则会收到错误 AWS已经做了很多事情来帮助解决这个问题:
- AWS SDK客户端将自动重试该请求数次,然后才能看到ProvisionedThroughPuteExceedeDexception
- 在中最多可以消耗五分钟的未使用容量,以适应请求的峰值
- 您可以每天无限次地增加表上的已设置读/写次数(以每秒执行更多读/写)
- 您可以减少表上已配置的吞吐量(以节省资金)
- 您可以使用第三方应用程序自动管理所提供吞吐量的上下扩展
- 批处理或长时间运行的应用程序可以回退并重试这些请求(如果发生这些请求以限制表的使用)
- 当从表中批量加载或批量读取时,您可以手动放大吞吐量并在完成后缩小
- 对于事务性应用程序,您可以确保所配置的吞吐量高于运行应用程序所需的水平
- 自己使用动态DynamoDB或脚本更改表吞吐量
File "batchpy.py", line 61, in <module>
obj.batch_w1()
File "batchpy.py", line 49, in batch_w1
batch.put_item(data=item)
File "/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/table.py", line 1641, in __exit__
self.resend_unprocessed()
File "/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/table.py", line 1718, in resend_unprocessed
resp = self.table.connection.batch_write_item(batch_data)
File "/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/layer1.py", line 420, in batch_write_item
body=json.dumps(params))
File "/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/layer1.py", line 2842, in make_request
retry_handler=self._retry_handler)
File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 954, in _mexe
status = retry_handler(response, i, next_sleep)
File "/usr/local/lib/python2.7/dist-packages/boto/dynamodb2/layer1.py", line 2876, in _retry_handler
response.status, response.reason, data)
boto.dynamodb2.exceptions.ProvisionedThroughputExceededException: ProvisionedThroughputExceededException: 400 Bad Request
{u'message': u'The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API', u'__type': u'com.amazonaws.dynamodb.v20120810#ProvisionedThroughputExceededException'}