我知道这是一个可怕的,一般化的问题,没有很好的答案,我提前道歉,但我想知道是否有人可以刺激一个非常广泛的估计。
比方说,你有一个专门的MySQL服务器运行价值约1千美元的现代硬件。
比方说,普通用户每分钟发出20个读取请求和5个写入请求 – 所有直接的查询,没有连接; 大部分是按照〜10,000,000行的索引表,从UUID中select这一行。
非常,非常,非常粗略地说,在你推动之前,你会期望有多less并发用户能够像这样处理服务器。
如你所说,这是一个非常广泛的估计。
最大的问题是你用1000美元买的东西。 假如你用普通的硬盘获得更多的内存和更less的处理器能力,那么我认为一个合理编码的应用程序(在合理的情况下,主要使用你的语言提供的任何抽象库)应该能够处理大约500并发用户。 除了行集的大小外,我会猜到更多(因为直接放入RAM的行越多,即使是立即写入也要做的磁盘就越less)。
行中的数据types以及您能承受的RAM数量绝对是这种情况下最大的因素。 如果你可以通过更less的写入和更小的索引表来实现,我认为你可能会同时拥有1000个用户。
你会看到两个问题:
您可以在RAM中caching的数据量,因此您拥有超过运行基本操作系统和数据库服务器操作所需最低限度的RAM数量将决定您可以放弃哪些内容。 更多的内存,更less的操作系统需求,以及更less的有用的数据量应该保存在RAM中,以便查询和写入将意味着可接受的性能和批量之间的差异,以及大量的抖动。
你的应用程序的devise是绝对关键的。 一个写作分布在500-1000个用户有巨大的,巨大的影响。 同样,如果你的电话不简单和有效,那么你将很快导致火车残骸。 我根据我所看到的许多mySQL应用程序,估算了他们的工作方式。 如果应用程序有根本性的问题,那么你甚至可能不会达到40个用户。 如果你有效的编码,并考虑到硬件的限制,你可以轻松地扩展到2000以上。
我可以回答。 我刚走下那段路,又会骑上。
650至800美元将购买8 GB RAM中速四核AMD运行1TB SATA2驱动器。 170美元将购买第二个相对较快的1TB驱动器。 请记住,这是大多数电子产品/办公室商店/最佳购买型场所的现成硬件。 你可以在其他地方得到更多的回报,但不是为了钱。 你可以更快地获得更快的四核。
现在,关于应用程序,我会假设你正在为操作系统运行linux / BSD / unix,并避免ms和unix之间的争论。 这是我发现的:
我们没有任何问题,在我们的应用程序中指定200多个活动用户/会话,而不会眨眼,不pipe应用程序有多弱。 事实上,我们还没有能够在我们已经运行一段时间的四核服务器上丢失/崩溃/阻塞应用程序……但是我们在单核200mhz的时间里学到了一些教训。
例如,我们的姊妹公司销售不less基于mysql的通信监控系统,每台机器1300+用户,平均每小时几百个并发会话。 日志logging和报告是实时完成的(当然,也有一些缓冲发生),并且他们已经在[gasp]缓慢的PATA驱动器上运行在3Ghz双核计算机上…实际上,133Mhz P-ata驱动器。 最长的用户界面滞后约为2秒。 十年前,他们甩掉了MySQL的MSSQL,并立即得到了结果。
请记住,这些机器运行的Web应用程序+数据库….所以你做math。 它只是工作。 另外,我已经用这些replace了许多oracle / MS / xxxx应用程序,并且从来没有接近耗尽的时间。 另外,让我展开其他人从dba的angular度来说…这里有6条来自战壕的技巧。
你可以通过查看大多数wordpress / etc来看到愚蠢的SQL。 插件。 大部分是由不懂sql的人编写的,而且他们会很快将服务器带到很less的用户的膝盖上。
884美元的服务器,8GB内存,双核心至强,300GB 7200转SATA硬盘,40%闲置,5%iowait
Uptime: 780727 Threads: 276 Questions: 1884267879 Slow queries: 3964303 Opens: 60474 Flush tables: 1 Open tables: 440 Queries per second avg: 2413.478
而服务220mb /秒