由于性能问题,我们将从一台服务器移至两台服务器。我们将 MySQL DB 移至其自己的专用服务器,并将保留原始机器作为运行 nginx/apache(Django 后端)的前端机器。
我们如何监控此更改的值?由于 MySQL 查询将通过安全的远程连接而不是本地连接进行,我们的整个网站实际上可能会变慢吗?
答案1
将数据库移动到它自己的机器上是非常常见的,如果做得正确,应该会大大提高您的性能。
但是,我担心您的“安全远程连接”。通常,数据库应该与您的 Web 服务器位于同一个数据中心(甚至同一个机架、同一个交换机上)。我相信这里合适的短语是“连接良好”。当您说“安全远程连接”时,我脑海中浮现出 VPN 连接到某个地方的画面,不知道距离有多远。那可能会有麻烦。
如果听起来,这两台服务器的连接并不是很好,那么您应该做一些事情来确保您的网站保持响应,那就是检查它们之间的平均延迟。一种快速而粗略的方法是从一个服务器 ping 到另一个服务器,以便它保持运行,并观察时间。我的服务器几乎都是 1ms 或 <1ms,偶尔会有 2ms 或 3ms。如果你看到的数字大得多,你可能需要重新考虑这一点。
答案2
我会使用 ab 之类的工具来运行一些基准测试(ApacheBench) 或 siege 在移动 MySQL 服务器之前和之后查看净效果。
将 MySQL 移至外部服务器可能会降低性能,但这取决于您运行的查询类型以及新数据库服务器的具体距离。如果它位于同一数据中心内,使用 100Mbps/1Gbps 线路,我预计性能不会下降。将 MySQL 移至自己的服务器可能会有所帮助,因为您的 RAM/CPU 总量会“翻倍”。
答案3
通常,将数据库服务器远离使用它的对象不是一个好主意。当然,如果您的查询很复杂并且返回的数据量很少,那么这样做可能没问题,但由于您正在运行 Django,因此会有很多查询,因此传输和延迟也很多。
衡量网站总体性能的一个简单方法是Fiddler。它是一种将自身作为代理插入到您的 Web 浏览器和您访问的网站之间的工具。我发现它对于测量整体网站性能非常有用。虽然这不能直接测量此 DB 移动所增加的延迟,但您应该能够进行适当的比较,而且这样做很轻松。