重载LAMP应用的最佳硬件configuration是什么?

我需要为大量的并发用户运行Linux-Apache-PHP-MySQL应用程序(Moodle电子学习平台) – 我瞄准了5000个用户。 同时我的意思是5000人应该能够同时使用应用程序。 “工作”不仅意味着数据库读取,而且也写入。

应用程序不是很典型,因为它在数据库上做了很多插入/更新,所以caching技术并没有多大帮助。 我们正在使用InnoDB存储引擎。 另外应用程序不是在考虑性能的情况下编写的。 例如,一个Apache线程通常占用大约30-50 MB的RAM。

我将非常乐意了解需要哪些硬件来构build可以处理这种负载的可伸缩configuration。

我们现在正在使用两个带有两个4核心处理器的HP DLG 380,它们能够处理更低的负载(通常为300-500个并发用户)。 投资这种机箱和使用它们来构build集群是合理的还是采用更高端的硬件更好?

我特别好奇

  • 需要多lessfunction强大的服务器(处理器/内核的数量,RAM的大小)
  • 什么networking设备应该使用(什么样的交换机,网卡)
  • 任何其他硬件,如特定的磁盘存储解决scheme等,都是需要的

另一件事是如何把所有的东西放在一起,那就是最优化的架构。 使用MySQL进行集群相当困难(人们抱怨MySQL集群,即使在Stackoverflow也是如此)。

光盘。 在适当的RAID控制器后面有大量FAST光盘。 我个人使用的是SuperMicro 2机架式机箱,它有24个2.5英寸的光盘,还有WD Velociraptor 10k RPM光盘 – 对我来说足够好,你可以很容易地把这些盒子堆叠起来,以便使用更多的光盘 – 我使用的RAID控制器(Adaptec 5805 )可以解决大约190张光盘的问题,当谈到高端数据库时,使用插件和更新,光盘将是您的问题。

获得那些(X> 1)的X的冗余和主/从他们的数据库明智(这里没有一个MySQL的专家)。

networking:可能在集群内部1gbit。 在你走10Gbit之前 – 看看Infiniband(12Gbit)。 有了比使用10Gbit以太网更便宜的适当的电路板,并具有更好的延迟。

然后使用较小的/其他箱子的前端。 超微和泰安都有多节点笼 – 你可以得到一个2个机架单位的系统,这是4个单独的电脑,每个处理器2个。 集群的前端;)现代处理器感谢天堂可以解决大量的内存,所以50MB / Apache的进程并不是那么糟糕。 习惯32或64千兆字节的RAM机器;)

另外,你可能想要看前端的nito刀片,但我从来没有能够从中获得经济效益(方式太昂贵了,加上笼子 – 你好吗?)。

忘记集群 – 当每个人都需要写入数据库时​​,它不能正常工作。

也许你可以分割你的数据 – 使用几个数据库。 例如,在服务器databaseserver_0上连接到数据库databasename_0 substring(md5sum(username) for 1)="0"连接到服务器databaseserver_0上的databaseserver_0 substring(md5sum(username) for 1)="2"

例如,对于2台服务器,DNS名称databaseserver_0databaseserver_7将指向server1databaseserver_8指向databaseserver_f指向server2 。 如果一台服务器比另一台服务器更强大,你可以运行更多的数据库。

这样你可以轻松地和便宜地扩展。