扩展 LAMP 堆栈

4 php optimization performance memory lamp

一旦每月的点击量超过 10 万次,这个社区的人们会说最大的障碍是什么?

我的情况:大量静态媒体(音频/视频/图像)由 S3/CDN 提供,但作为备份存储在本地(但未提供)。所有可以缓存的东西都会被缓存,大约 8 GB 内存可扩展到 32 GB。

目前,我们正在毫无问题地处理大约 10 万次点击,并且很想知道其他人遇到了哪些问题:负载平衡?内存问题?磁盘输入/输出?

感谢您的任何提示。我浏览了相关问题,他们回答得很好,但只是想得到更多反馈。

cle*_*tus 5

如今,硬件非常便宜,以至于越来越少的人甚至需要不止一台机器。10,000 美元将为您购买:

  • 16-32GB 内存;
  • 2 个四核 Xeon;
  • RAID5磁盘阵列。

这种机器可以在一个稍微优化的站点上为除资源最密集的应用程序之外的所有应用程序提供超过 10,000 个并发用户服务。

基本上有两种可扩展性的方法:

  • 垂直:基本上购买最大的机器,这样你就不需要多于一台;
  • 水平:以适合并行的方式做事。仅在最密集的应用程序中需要。

看看 StackOverflow:它基本上运行在 Web 服务器和数据库服务器上,每月的点击量超过 600 万次。

话虽这么说,可扩展性就是发现并解决瓶颈。

  • 如果您的数据库速度变慢,请为其提供更多资源或使用某种形式的内存缓存来减轻负载;
  • 如果磁盘 I/O 是您的问题,则同样适用;
  • 如果内存不足导致过多页面错误并进而导致磁盘 I/O 问题,请添加更多内存;
  • 您的应用程序及其数据是否适合跨服务器分区?如果是这样,那就是水平扩展的一种方式;
  • 如果带宽是一个问题并且您要传送大文件,那么也许 CDN 就是答案;
  • 等等。

但归根结底,每月 10 万次点击量并没有那么大。我怀疑现在在一个典型的网站上,你需要每月访问超过 1000 万次才会遇到真正的问题,假设你做得不错(例如,如果你不索引你的数据库搜索,那么当然你会遇到问题,但它们与每月的点击量无关)。

我想说,冗余比可扩展性更令人头疼。拥有冗余链路、监控系统故障流程、拥有和维护 DR(灾难恢复)站点、处理随之而来的问题(如裂脑集群)等所涉及的问题要困难得多且乏味得多。