Python 为什么boto dynamodb2 get_项目速度不一致,而且看起来经常很糟糕?

Python 为什么boto dynamodb2 get_项目速度不一致,而且看起来经常很糟糕?,python,amazon-web-services,boto,amazon-dynamodb,Python,Amazon Web Services,Boto,Amazon Dynamodb,为什么我的dynamodb请求通过boto:get_项的速度如此之慢,而且太频繁而非常缓慢?AWS控制台报告我的get延迟已达到12.5ms的最高值。我的要求都没有那么低 Python 2.7.5 AWS地区美国西部1 boto 2.31.1 dynamodb表大小~180k记录 代码: 结果: (botot)➜ ~ python test2.py 0.056941986084 0.0681240558624 (botot)➜ ~ python test2.py 1.0570960044

为什么我的dynamodb请求通过boto:get_项的速度如此之慢,而且太频繁而非常缓慢?AWS控制台报告我的get延迟已达到12.5ms的最高值。我的要求都没有那么低

Python 2.7.5 AWS地区美国西部1 boto 2.31.1 dynamodb表大小~180k记录

代码:

结果:

(botot)➜  ~  python test2.py
0.056941986084
0.0681240558624
(botot)➜  ~  python test2.py
1.05709600449
1.06937909126
(botot)➜  ~  python test2.py
0.048614025116
0.0575139522552
(botot)➜  ~  python test2.py
0.0553398132324
0.064425945282
(botot)➜  ~  python test2.py
3.05251288414
3.06584000587
(botot)➜  ~  python test2.py
0.0579640865326
0.0699849128723
(botot)➜  ~  python test2.py
0.0530469417572
0.0628390312195
(botot)➜  ~  python test2.py
1.05059504509
1.05963993073
(botot)➜  ~  python test2.py
1.05139684677
1.0603158474
更新2014-07-11 08:03太平洋标准时间 实际用例是查找每个web请求的用户。正如@gamaat所说,DynamoDB的成本在第一次查找中,因为这是HTTPS连接的时候。因此,如果我能够存储请求之间的DynamoDB连接并重用它,事情就会进展得更快。因此,我使用werkzeug.contrib.cache.FileSystemCache来存储连接,但它似乎从未实际存储用于检索的连接。其他值可以很好地存储,只是不能存储此连接对象。有什么想法吗?如果这不是存储请求之间连接的好方法,那么是什么

更新2014-07-11太平洋标准时间15:30
由于我使用supervisor和uwsgi来管理我的Flask应用程序,因此问题似乎实际上是如何在我的Flask应用程序的请求之间共享连接对象。

这个问题的解决方案似乎产生了更好的响应时间(平均响应时间之前约500毫秒,之后约50毫秒)是做两件事:

1) 将Boto DynamoDB连接对象置于default_settings.py中,以便在每次应用程序加载时将其加载到app.config[“DYNDB_CONN”];及

2) 将uwsgi配置为具有更便宜的num_进程值-1和更便宜的num_进程初始值-1。这告诉uwsgi始终让num_进程—1个uwsgi进程始终运行,如果负载需要,可以选择启动一个以上的进程


我这样做是为了尽量减少将重新启动的uwsgi进程的数量,从而创建一个新的Boto DynamoDB连接对象(产生HTTP连接设置成本)。

您的测试包括创建到服务的HTTPS连接所需的时间,这实际上是一次性的成本。另外,为了更准确地了解平均延迟,我会尝试检索两个以上的项目。试着做1000次或更多,并将其平均。实际上,我使用的是t1.micro作为NAT,这是真正的瓶颈。
(botot)➜  ~  python test2.py
0.056941986084
0.0681240558624
(botot)➜  ~  python test2.py
1.05709600449
1.06937909126
(botot)➜  ~  python test2.py
0.048614025116
0.0575139522552
(botot)➜  ~  python test2.py
0.0553398132324
0.064425945282
(botot)➜  ~  python test2.py
3.05251288414
3.06584000587
(botot)➜  ~  python test2.py
0.0579640865326
0.0699849128723
(botot)➜  ~  python test2.py
0.0530469417572
0.0628390312195
(botot)➜  ~  python test2.py
1.05059504509
1.05963993073
(botot)➜  ~  python test2.py
1.05139684677
1.0603158474