我需要为大量的并发用户运行Linux-Apache-PHP-MySQL应用程序(Moodle电子学习平台) – 我瞄准了5000个用户。 同时我的意思是5000人应该能够同时使用应用程序。 “工作”不仅意味着数据库读取,而且也写入。
应用程序不是很典型,因为它在数据库上做了很多插入/更新,所以caching技术并没有多大帮助。 我们正在使用InnoDB存储引擎。 另外应用程序不是在考虑性能的情况下编写的。 例如,一个Apache线程通常占用大约30-50 MB的RAM。
我将非常乐意了解需要哪些硬件来构build可以处理这种负载的可伸缩configuration。
我们现在正在使用两个带有两个4核心处理器的HP DLG 380,它们能够处理更低的负载(通常为300-500个并发用户)。 投资这种机箱和使用它们来构build集群是合理的还是采用更高端的硬件更好?
我特别好奇
另一件事是如何把所有的东西放在一起,那就是最优化的架构。 使用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_0到databaseserver_7将指向server1 , databaseserver_8指向databaseserver_f指向server2 。 如果一台服务器比另一台服务器更强大,你可以运行更多的数据库。
这样你可以轻松地和便宜地扩展。