测试 Amazon RDS 实例与外部服务器之间的连接延迟
Test connection latency between Amazon RDS instance and external server
我需要测试位于我自己的数据中心的服务器与 Amazon RDS 实例之间的连接。我试过
time telnet <dns-of-my.instance> 3306
但它会跟踪从我发出命令到我结束命令的时间,这无关紧要。
有什么方法可以测量吗?
我的回答不假定允许 ICMP ping,它使用基于 TCP 的措施。但是您必须确保有安全组规则允许从 shell 运行 测试访问 RDS 实例
首先,确保安装了一些有用的包
apt-get install netcat-openbsd traceroute
检查数据库端口的基本连接是否有效。此示例适用于 Oracle,确保您使用控制台中的端点和端口
nc -vz dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com 1521
然后看看延迟是多少。你要的是最后一个(第12步)
sudo tcptraceroute dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com 1521
traceroute to dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com (10.32.21.12), 30 hops max, 60 byte packets
1 pc-0-3.ioppublishing.com (172.16.0.3) 0.691 ms 3.341 ms 3.400 ms
2 10.100.101.1 (10.100.101.1) 0.839 ms 0.828 ms 0.811 ms
3 xe-10-2-0-12265.lon-001-score-1-re1.interoute.net (194.150.1.229) 10.591 ms 10.608 ms 10.592 ms
4 ae0-0.lon-001-score-2-re0.claranet.net (84.233.200.190) 10.575 ms 10.668 ms 10.668 ms
5 ae2-0.lon-004-score-1-re0.claranet.net (84.233.200.186) 12.708 ms 12.734 ms 12.717 ms
6 169.254.254.6 (169.254.254.6) 12.673 ms * *
7 169.254.254.1 (169.254.254.1) 10.623 ms 10.642 ms 10.823 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * 10.32.21.12 (10.32.21.12) <syn,ack> 20.662 ms 21.305 ms
"latency" 的更好度量可能是 "the time a typical transaction takes with no or little data to transfer"。为此,请编写一个脚本元素,在循环中执行此操作,可能循环 1000 次,然后使用高精度计时器对其计时。但具体细节因您的需要而异
使用 ping。您将需要 enable ping on your EC2 instance per this answer。
Ping 将为每个 ping 提供一个时间(以毫秒为单位):
ping 34.217.36.7
PING 34.217.36.7 (34.217.36.7): 56 data bytes
64 bytes from 34.217.36.7: icmp_seq=0 ttl=227 time=68.873 ms
64 bytes from 34.217.36.7: icmp_seq=1 ttl=227 time=68.842 ms
64 bytes from 34.217.36.7: icmp_seq=2 ttl=227 time=68.959 ms
64 bytes from 34.217.36.7: icmp_seq=3 ttl=227 time=69.053 ms
查询时间。 RDS 必须托管一个 SQL 数据库服务器,因此向它发出一个简单的 SQL 查询并确定执行时间。
例如,如果您的 RDS 实例是 PostgreSQL,请使用 psql
连接并启用 \timing
。
psql -h myhost -U myuser
postgres=> \timing
Timing is on.
postgres=> SELECT 1;
?column?
----------
1
(1 row)
Time: 14.168 ms
本例中的延迟为 14.168 毫秒。请参阅手册以了解您的特定 SQL 服务器实施的时间。
我需要测试位于我自己的数据中心的服务器与 Amazon RDS 实例之间的连接。我试过
time telnet <dns-of-my.instance> 3306
但它会跟踪从我发出命令到我结束命令的时间,这无关紧要。
有什么方法可以测量吗?
我的回答不假定允许 ICMP ping,它使用基于 TCP 的措施。但是您必须确保有安全组规则允许从 shell 运行 测试访问 RDS 实例
首先,确保安装了一些有用的包
apt-get install netcat-openbsd traceroute
检查数据库端口的基本连接是否有效。此示例适用于 Oracle,确保您使用控制台中的端点和端口
nc -vz dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com 1521
然后看看延迟是多少。你要的是最后一个(第12步)
sudo tcptraceroute dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com 1521
traceroute to dev-fulfil.cvxzodonju67.eu-west-1.rds.amazonaws.com (10.32.21.12), 30 hops max, 60 byte packets
1 pc-0-3.ioppublishing.com (172.16.0.3) 0.691 ms 3.341 ms 3.400 ms
2 10.100.101.1 (10.100.101.1) 0.839 ms 0.828 ms 0.811 ms
3 xe-10-2-0-12265.lon-001-score-1-re1.interoute.net (194.150.1.229) 10.591 ms 10.608 ms 10.592 ms
4 ae0-0.lon-001-score-2-re0.claranet.net (84.233.200.190) 10.575 ms 10.668 ms 10.668 ms
5 ae2-0.lon-004-score-1-re0.claranet.net (84.233.200.186) 12.708 ms 12.734 ms 12.717 ms
6 169.254.254.6 (169.254.254.6) 12.673 ms * *
7 169.254.254.1 (169.254.254.1) 10.623 ms 10.642 ms 10.823 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * 10.32.21.12 (10.32.21.12) <syn,ack> 20.662 ms 21.305 ms
"latency" 的更好度量可能是 "the time a typical transaction takes with no or little data to transfer"。为此,请编写一个脚本元素,在循环中执行此操作,可能循环 1000 次,然后使用高精度计时器对其计时。但具体细节因您的需要而异
使用 ping。您将需要 enable ping on your EC2 instance per this answer。
Ping 将为每个 ping 提供一个时间(以毫秒为单位):
ping 34.217.36.7
PING 34.217.36.7 (34.217.36.7): 56 data bytes
64 bytes from 34.217.36.7: icmp_seq=0 ttl=227 time=68.873 ms
64 bytes from 34.217.36.7: icmp_seq=1 ttl=227 time=68.842 ms
64 bytes from 34.217.36.7: icmp_seq=2 ttl=227 time=68.959 ms
64 bytes from 34.217.36.7: icmp_seq=3 ttl=227 time=69.053 ms
查询时间。 RDS 必须托管一个 SQL 数据库服务器,因此向它发出一个简单的 SQL 查询并确定执行时间。
例如,如果您的 RDS 实例是 PostgreSQL,请使用 psql
连接并启用 \timing
。
psql -h myhost -U myuser
postgres=> \timing
Timing is on.
postgres=> SELECT 1;
?column?
----------
1
(1 row)
Time: 14.168 ms
本例中的延迟为 14.168 毫秒。请参阅手册以了解您的特定 SQL 服务器实施的时间。