![AWS(EC2 和 RDS)跨区域性能问题](https://linux22.com/image/746197/AWS%EF%BC%88EC2%20%E5%92%8C%20RDS%EF%BC%89%E8%B7%A8%E5%8C%BA%E5%9F%9F%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98.png)
我在日本有 RDS 服务器和两个 EC2 实例,一个在欧盟,另一个在日本。
我正在日本 EC2 实例上运行一个连接到 RDS(日本)的应用程序。在这个应用程序中,我只是同时在 200 个线程中从数据库中选择数据,它运行良好,没有任何错误。
但是,当我在欧盟的 EC2 实例上运行相同的应用程序时,使用 200 个线程与当时联系 RDS(日本)的线程,我收到以下错误..
System.InvalidOperationException:超时已过期。在从池中获取连接之前已超过超时期限。发生这种情况的原因可能是所有池连接均在使用中,并且已达到最大池大小。
显然,欧盟EC2和日本RDS之间会存在网络延迟。
是否有任何设置可以帮助我忽略此错误并成功从欧盟的 EC2 实例联系到日本 RDS 的 200 个连接?
答案1
正如您之前提到的,欧盟和日本之间存在一些网络延迟。我猜大多数应用程序都不是为这样的设置而设计的 - 通常应用服务器和数据库服务器彼此靠近。
我能想到几种解决方法:
- 增加应用程序中的超时设置
- 为 RDS 连接启用压缩
- 如果可行的话,使用某种区域到区域的复制
- 如果您正在运行 Web 应用程序,请在 EU 中创建一个 (http) 代理服务器
- 尝试极光,支持跨区域复制