问题原因
ECS连接RDS慢
回答
1、RDS的CPU、IO、内存使用率很高
RDS控制台查看性能监控,CPU/IO/内存使用率是否很高
2、网络链路延迟大
在ECS上ping RDS地址,查看下延迟是否有异常(正常情况下,同地域ECS和RDS延迟小于3ms)
3、ECS的CPU、IO和带宽使用率很高
RDS控制台查看性能监控,CPU/IO/带宽使用率是否很高
4、ECS网卡多队列配置不合理
Linux:
假设ECS实例主网卡是eth0,辅助弹性网卡是eth1
依次执行ethtool -l eth0
、ethtool -l eth1
,若返回信息中,两个Combined值相同,表示已开启多队列,否则,执行ethtool -L
网卡名
combined
另一个combined的值
开启多队列
示例:
# 查看网卡eth1支持多队列的情况 [root@localhost ~]# ethtool -l eth1 Channel parameters for eth1: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 # 表示最多支持设置4个队列 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 # 表示当前生效的是1个队列 # 8和13行的两个Combined值不一样,表示没有开启网卡多队列 # 设置网卡eth1使用4个队列 [root@localhost ~]# ethtool -L eth1 combined 4
5、抓包
抓包进行分析抓包步骤:
Windows(需要安装wireshark):
- 在Wireshark 界面中,选择 Capture -》 Interface ,选择对应连接云数据库的内网网卡后 > Option > 在 File 输入框中输入要保存的文件 1.cap,然后点击 start 开始抓包。
- 连接RDS,复现问题。
- 问题复现后,停止抓包。
- 分析报文。
Linux:
- 打开一个到ECS的ssh连接,并以root身份登录。
在该窗口运行下列命令
tcpdump -i any -s 0 host 实例的链接地址域名 -C 200 -W 10 -w /tmp/error_get.pcap
#200M一个包, 一共10个包 循环,遇到异常stop
- 连接RDS, 复现问题。
- 使用 ctrl + c 终止窗口1 的 tcpdump 命令。
- 分析报文。