【问题标题】:Test connection latency between Amazon RDS instance and external server测试 Amazon RDS 实例与外部服务器之间的连接延迟
【发布时间】:2018-08-28 06:41:30
【问题描述】:

我需要测试位于我自己数据中心的服务器与 Amazon RDS 实例之间的连接。我试过了

time telnet <dns-of-my.instance> 3306

但它会跟踪从我发出命令到我结束它的时间,这不相关。

有什么方法可以衡量这个吗?

【问题讨论】:

    标签: amazon-web-services ubuntu amazon-rds latency


    【解决方案1】:

    我的回答不假设允许 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
    

    “延迟”的更好衡量标准可能是“典型事务在没有或只有很少数据传输的情况下所花费的时间”。为此,请编写一个循环执行此操作的脚本元素,可能循环 1000 次,然后使用高精度计时器对其进行计时。但具体细节会根据您的需要而有所不同

    【讨论】:

      【解决方案2】:

      使用 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
      

      【讨论】:

      • 您的回答仅对 EC2 实例的 icmp 请求有效,对 RDS 无效
      • @Alex 这取决于您所说的“延迟”是什么意思。 ICMP 数据包往返的时间可能与 TCP 数据包时间相似
      • @Vorsprung 它不取决于任何人的意思。 Snide 的回答与这个问题完全无关,除非在你的屏幕上喊出不同的延迟定义可以让 RDS 实例接受 ICMP 数据包。
      【解决方案3】:

      查询时间。 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 Server 实施时间。

      【讨论】:

        猜你喜欢
        • 2021-10-15
        • 2021-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-06
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多