gpt4 book ai didi

mysql - 通过套接字将ec2服务器连接到rds?

转载 作者:行者123 更新时间:2023-11-29 07:32:18 26 4
gpt4 key购买 nike

我目前正在通过以下方式将我的 ec2 服务器连接到 rds:

    self.conn = MySQLdb.connect (
host = settings.DATABASES['default']['HOST'],
port = 3306,
user = settings.DATABASES['default']['USER'],
passwd = settings.DATABASES['default']['PASSWORD'],
db = settings.DATABASES['default']['NAME'])

这是通过 tcp 连接的,当我在自己的机器上通过套接字连接到 mysql 时,这对我来说比本地慢得多。我如何通过套接字连接将 ec2 实例连接到 rds 数据库,这样它比使用 tcp/ip 进行长时间运行的脚本要快得多(对我来说,区别是更新脚本需要 10 小时而不是 1 小时)。

最佳答案

简短回答:你不能。

旁白:Linux 服务器上与 MySQL 的所有连接当然都使用“套接字”,无论它们是 Internet (TCP) 套接字还是 IPC/Unix 域套接字。但在这个问题中,正如常见的 MySQL 说法一样,“socket”指的是 IPC 套接字连接,使用特殊文件,例如 /tmp/mysql.sock,尽管套接字文件的具体路径因 Linux 发行版而异。

A Unix domain socket or IPC socket (inter-process communication socket) is a data communications endpoint for exchanging data between processes executing within the same host operating system.

https://en.m.wikipedia.org/wiki/Unix_domain_socket

所以,你不能使用MySQL“套接字”连接机制,因为RDS服务器不在同一台机器上。当然,只要 MySQL 服务器位于不同的机器上,这同样适用。

在本地计算机上,IPC 套接字连接和 TCP 套接字连接(来自/到同一台计算机)之间的性能差异可以忽略不计。毫无疑问,TCP 连接比 IPC 具有更多的开销,这仅仅是因为 TCP/IP 包装器和校验和、三向握手等……但同样,这些微小的毫秒级差异将在网络上完全丢失。不经意的观察者。

得出 TCP 连接比 IPC 连接“慢”(尤其是慢 10 倍)的结论是不正确的。围绕“较慢”的引号反射(reflect)了我的结论,即您尚未足够精确地定义“较慢”:连接速度慢?传输大量数据很慢(带宽/吞吐量问题)?每个查询返回的速度较慢?

记下Fallacies of Distributed Computing ,尤其是这个:

Latency is zero.

我怀疑您的主要性能问题将在于您的代码对于非零延迟不是最佳的。一个区域内 EC2 中的系统(包括 RDS)之间的延迟应低于 1 毫秒,但这仍然是本地计算机上的往返延迟的数百倍(技术上不是零,但很可能只有几微秒) )。

使用 TCP 连接(使用主机 127.0.0.1 和端口 3306)而不是 IPC 套接字在本地测试代码应该可以说明是否确实存在显着差异,或者问题是否出在其他地方......可能是低效使用连接,或不必要的重复断开/重新连接,尽管如果没有更清楚地理解“慢”的含义,就很难进一步推测。

关于mysql - 通过套接字将ec2服务器连接到rds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com