AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 27191
Accepted
z-boss
z-boss
Asked: 2009-06-18 04:07:56 +0800 CST2009-06-18 04:07:56 +0800 CST 2009-06-18 04:07:56 +0800 CST

何时是添加单独数据库服务器、添加更多 Web 服务器的合适时机?

  • 772

通常 Web 项目从小规模开始,一切都在一台服务器上。但是,如果网站变得流行,一台服务器就不够了。
所以,由于我在这方面没有任何经验,我想了解一下:
1. 什么样的负载意味着我需要将我的 MySQL DB 移动到单独的服务器以及如何测量这种负载?
2. 什么样的负载意味着我需要添加另一个Web服务器,如何衡量?
3. 一台服务器大概可以服务多少用户?

我说的是 LAMP 服务器上的简单 PHP 应用程序,如下所示:
* CPU:Athlon 3800+
* CPU 详细信息:2 x 2.0 GHz
* RAM:1 GB RAM
* 硬盘:2 x 160 GB(RAID 1 软件)

web-server capacity-planning scaling
  • 5 5 个回答
  • 3796 Views

5 个回答

  • Voted
  1. Best Answer
    pQd
    2009-06-18T04:12:13+08:002009-06-18T04:12:13+08:00

    这一切都取决于......你的数据集的大小,使用模式。

    衡量最终用户体验。设置可接受的页面加载时间,每 5-10 分钟测试一次,绘制图表。这一切都取决于您的企业可以容忍什么以及何时变得不可接受。

    在 mysql 中启用 slow_query,可能您不希望每天有超过 5-10 个查询需要超过 10 秒。或者也许你有一些夜间报道,你可以忍受这些?

    可能你想生成一些统计信息——例如munin与 cpu 使用情况、iostats、系统负载、网络流量、http 进程数、mysql 线程数、页面生成时间,并查看它在一天/一周内的变化。你可以用它来确定高峰时间,并可以看到例如添加更多内存/调整 mysql 如何改变你的页面加载时间。

    在您的情况下,平均负载 > 2 或 3 意味着系统超载 [但这很值得讨论]

    在这里寻找一些提示。

    • 3
  2. Vatine
    2009-06-18T04:46:30+08:002009-06-18T04:46:30+08:00

    开始规划更多服务器和可扩展架构的时间是当您坐下来制定规范时(您希望拥有一个具有模块化功能的代码库,因此很容易将事情分开,但至少有一个“网络前端-end”和“数据库后端”是某种程度的 ov 模块化)。

    一旦你准备好并在一台服务器(数据库和前端)上运行,你就可以监控不同操作需要多长时间以及机器上的负载。一旦负载开始超过“CPU 数量”,您肯定会进入“我们应该将其拆分”的领域。如果您保存了历史数据,您可以推断未来的情况并决定一次添加更多容量,其中容量将大致按需要进行。

    在 unix 机器上,“平均负载”是(大约)运行队列的平均长度(即,准备运行但等待时隙的进程;通常不按物理上的 CPU 数量缩放)盒子)。如果这持续高于您拥有的 CPU 数量,则这至少表明该机器过度工作。这不是唯一的衡量标准,但作为一个硬性的指南,它并不算太糟糕,系统会为您计算它。

    • 2
  3. Brent
    2009-06-18T05:35:04+08:002009-06-18T05:35:04+08:00

    除了负载之外,另一件要考虑的事情是您需要100% 的正常运行时间。如果您需要您的站点在服务器重新启动期间保持正常运行,那么您需要一些冗余/集群。

    我们的网络服务器作为虚拟机运行,因此我们只使用两个(大约 200 个站点)来实现冗余,并且可以在必要时增加“服务器资源”来处理负载,而无需引入第三个网络服务器(最多) .

    如果您需要提高性能,最简单的方法是将您的 MySQL 分离到一个单独的盒子中。但是,这也意味着您的站点将关闭两倍(即 - 当任一服务器重新启动/失败时它们将关闭)

    • 2
  4. womble
    2009-06-18T04:14:38+08:002009-06-18T04:14:38+08:00

    当您的容量规划告诉您在当前基础架构用完之前,新服务器的交付时间大约是您的 3 倍时,您就升级了。

    • 0
  5. hurikhan77
    2009-06-18T06:23:19+08:002009-06-18T06:23:19+08:00

    您还应该查看 mod_proxy 和 mod_disk_cache 以考虑您的计划。放置在单独的分区上,应用程序发送正确的标头(Cache-Control 等),这是提高应用程序在 apache 上的性能的一种非常好且简单的方法,因为任何缓存(和可缓存)页面都可以像静态一样提供。

    不要尝试使用 mod_mem_cache 因为缓存共享原因它的性能较差。

    在我正在运行的大规模虚拟主机系统上,它降低了大约 20-30% 的负载。请注意 mod_disk_cache 参数,因为如果设置错误,它们可能会显着增加您的 iostats。

    • 0

相关问题

  • 我应该期望 WAMP 和 LAMP 堆栈之间存在哪些不一致?[关闭]

  • 为什么 Apache Tomcat 可能不会在退出时释放端口?

  • 在 IIS 中设置多个网站是否有任何开销?

  • 为什么 IIS 拒绝提供 ASP.NET 内容?

  • 您使用哪些工具进行漏洞扫描?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve