如何扩展 Web 应用程序?

pho*_*x24 7 nginx scaling load-balancing apache-2.2

我主要是一名 Web 应用程序开发人员,我对缩放/可扩展性技术知之甚少。我的应用程序是用 Python 编写的,使用 Django;一个相当标准的设置。

我目前使用 Apache 2.2 作为我的网络服务器,而 MySQL 作为我的数据库服务器;两者都运行在同一个 VPS 上。

到目前为止,它基本上是一个原型,并且在任何给定时间只有 15-30 个并发用户;所以我没有问题,但现在由于我们将添加更多用户,我们将遇到性能问题。

所以我的问题是如何扩展我的网络应用程序?我目前的计划如下:

  1. 现在我只有一台 vps 服务器在运行,apache + MySQL。
  2. 接下来,我计划添加另一个 vps 服务器,仅运行 MySQL,因此我将拥有一个网络服务器和一个数据库服务器。
  3. 接下来,我将向网络服务器添加 memcache 以缓存数据,以减轻 MySQL 的负担。
  4. 接下来,另一个用于提供所有静态内容的 Web 服务器。
  5. 接下来,一个用于负载平衡的 VPS 服务器(nginx/varnish),后面将是我的两个网络服务器,然后是 db-server。

这听起来像一个可行的策略吗?请指导我在这里。

Luk*_*404 1

你知道你的第一个瓶颈在哪里吗?如果没有,您是如何安排要做的事情的顺序的?

也就是说,如果您在应用程序中没有做任何严重错误,那么您可能遇到的第一个限制将是由数据库引起的磁盘 I/O,您的策略可能是一个不错的选择。

将数据库移动到另一个物理磁盘应该会有很大帮助,并且是您要做的第一件事。例如,根据您使用的系统,在当前主机上使用第二个磁盘或移动到完全独立的服务器之间可能没有区别或有很大区别。你在 VPS 上运行,如果你的磁盘 I/O 受限,那么如果它碰巧使用相同的存储(相同的磁盘或相同的 SAN 或其他),那么移动到第二个 VPS 可能不会有太大帮助 - 但最后一个是您的 vps 提供商应该解决这个问题。