我正在解决Angular 1.3,NodeJS,Postgres数据库应用程序堆栈的几个http调用中的缓慢问题。 Remote托管在AWS EC2实例上。
Google's dev tools documentation让我对时间有了很好的理解,this SO post解释了你可以做些什么。
我对特定HTTP调用的网络响应显示TTFB(第一个字节的时间)缓慢,有时与ttfb时序中添加的3s
一样慢,表明:
a)客户端与客户端之间的网络连接不良 服务器。因此数据很慢到达服务器并返回。
b)处理请求的慢速服务器。这要么是因为 硬件很弱或应用程序运行缓慢。或者,这两个 问题可以立即存在。
我尝试了什么:
EXPLAIN ANALYZE
会产生快速处理时间< 2ms的我的问题是:如果没有显示远程和本地之间的速度有很大差异,查询时间相当快,还有什么可能会增加缓慢?节点端是否存在某些中间件或处理,或者Angular会进行一些限制?
奇怪的是,我还发现TTFB时间偶尔会因同一请求而异常变化...... TTFB时间< 500ms,其他时间TTFB> 3秒。这是为什么?
网络响应:
EXPLAIN ANALYZE有问题的查询结果:
Planning time: 0.915 ms
Execution time: 1.687 ms
(30 rows)
版本:
Postgres :9.6.1
select version();
PostgreSQL 9.6.1 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.2 (clang-700.1.81), 64-bit
节点:7.4.0
Knex :0.12.6
Angular :1.3
答案 0 :(得分:1)
比较本地和远程AWS响应时间会产生类似的缓慢。
这指出了问题的最可能原因 - 数据库连接的使用效率低下。
不一致的TTFB来自这样一个事实,即有时您的请求在所有可用连接被消耗且未按时发布时到达。在这种情况下,默认的pg
驱动程序会导致等待时间,直到池中的连接可用。
要解决此问题,您需要了解如何使用连接: