2010-03-16 26 views
3

我需要为大量的并发用户运行Linux-Apache-PHP-MySQL应用程序(Moodle电子学习平台) - 我瞄准的是5000个用户。同时,我的意思是5000人应该能够同时使用该应用程序。 “工作”不仅意味着数据库读取,而且写入也是如此。什么是适合重载LAMP应用的最佳硬件配置

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

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

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

我特别好奇

  • 多少和多么强大的服务器 需要
  • 什么样的网络设备应该 使用(的RAM处理器/内核,大小号)(什么样的开关, 网卡)
  • 任何其它硬件, 等特定盘存储 解决方案等,需要的是

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

+0

属于serverfault.c – t0mm13b 2010-03-16 10:41:45

+0

我怀疑这是SO格式的问题。这更像是有偿咨询主题。甚至雇用经验丰富的东西主题。 – 2010-03-16 11:42:27

+0

我只是想了解peopel如何解决类似应用中的这类问题 – 2010-03-16 12:34:00

回答

2

一旦您超过了几台物理机器不能提供您所需的峰值负载的情况,您可能需要开始虚拟化。

EC2可能是目前LAMP堆栈中最灵活的解决方案。您可以将他们的虚拟机设置为物理机器,将它们集群,随着您需要更多计算时间将它们旋转起来,在非高峰时间将其关闭,创建机器映像以便于系统测试。

有多种解决方案可用于负载平衡和自动旋转。

如果您可以使您的应用程序合适,您也可以使用它们的非关系数据库引擎。在非常高的负载下,关系数据库(特别是MySQL)不能有效扩展。 SimpleDB,BigTable和类似的非关系数据库的峰值负载可以在添加硬件时几乎线性扩展。

尽管离开关系数据库是一个巨大的步骤,但我不能说我自己从来都不需要这样做。

+0

EC2接缝是一个不错的选择 – 2010-03-17 15:36:22

0

我不太确定硬件,而是从点的视图软件:

与将缓存中的对象和集合从数据库返回一个高效的数据层,然后我会说标准的主-slave配置可以正常工作。将所有写入路由到一个强壮的主节点,并将所有读取路由到从属节点,根据需要添加更多的从节点。

将数据缓存为从data-mapper/ORM而不是HTML返回的对象,并将Memcached用作缓存层。如果你更新一个对象,然后写入数据库并在memcached中更新,最好使用IdentityMap模式。尽管您可能会在Web服务器上运行这些实例,但您可能需要安装很多Memcached实例。

我们永远无法使MySQL集群正常工作。

小心你写的SQL查询,你应该没问题。

+0

“我们永远无法使MySQL集群正常工作”......您是否尝试过MySQL Cluster本身,或者您是指使用MMM还是DRBD或.. ?你尝试了什么? – Sam 2011-10-30 08:17:02

0

Piotr,你有没有试过在moodle.org上问这个问题呢?有几个类似的范围安装,其工作人员目前回答。另外,根据你的部署时间表,你可能想看看moodle 2.0的版本,而不是moodle 1.9的版本,看起来好像有很多针对moodle架构的一些问题的修正在那个版本。

另外:memcached岩石为此。 PHP的加速岩石为此。 serverfault可能是这个问题的更好的*交换网站,虽然

相关问题