如何优化MySQL数据库一次服务1000个请求?
对于像这样的网站:linksnappy.com
是否可以configuration将MySQL服务器分成一个负载平衡服务器? 所以如果其中一个超载切换到下一个。
http请求处理服务器的同样的问题。
另一个问题:我需要什么样的服务器来同时处理数千个请求? (http服务器)你可以看到我所说的网站的types是一个下载网站。 当我们有太多的下载请求时,服务器就会死亡。 我们目前拥有4GB内存的英特尔XEON四核2.4GHz。
让我们从头开始:
我们目前拥有4GB内存的intel xeon四核2.4GHz。
这可能是这里的罪魁祸首。 4GB的RAM是一个四核心的笑话,尤其是如果处理成千上万的并行请求。 由2000个请求(数千的低定义)提供了4096mb的RAM,每个请求留下2MB的RAM(ingnoring all else)。
你绝对不会只有一个MySQL的问题。 主要的问题是,你需要一个完整的基础设施,允许每秒处理数千个doswload请求(或者需要有人澄清你的post),这意味着很多networking带宽,很多的IO带宽,以及一个更多ram (比较抱歉) – 一个廉价的过时的低端工作站(就像这样 – 我的开发者工作站大约在3年前已经有4GB了,最近正在升级到8GB)。 你还需要一个IO子系统来处理负载,这可能意味着许多很多的光盘在一个漂亮的硬件RAID控制器(这里忘记软件 – 你想要的东西比你的软件RAID更多的function)。
HTTP负载均衡:无论是软件还是硬件(F5都有一些硬件)。 根据您的编程(会话),您可能需要粘性会话,以便同一客户端再次在同一个框中结束。
第一步是从实际网站(单独的sdomain / subdomain)中分离出下载文件,并在下一个过程中将它们分隔开来。 MySQL数据库(以及数据库 – 这绝不是特定于MySQL的)可以转到单独的服务器上。
每秒2000个请求不是需要多个服务器的东西,除非请求是复杂的,而他们很可能不是。 这个性能的主要限制很可能是IO方面。 在你的情况下,我敢打赌,你将4GB RAM与低端光盘子系统结合在一起。 为了给你一个数据库服务器如何可能的想法 – 我自己的主要数据库(存储财务数据)有大约10个高速磁盘(Velociraptors,10k RPM),以确保数据库(在我的情况下,一个SQL Server)不变成瓶颈。 我在IO方面仍然存在性能问题…所以我现在可能会把一些东西移到SSD上。 从技术上讲,除非只从内存中进行传输(这对于设置为共享的4gb ram是非常不可能的),IO子系统是数据库的主要限制。
最后,你的编程很多。 你不会有一个像样的答案 – 这需要大量的计划,看你的代码。
每秒的请求是神奇的数字,没有任何意义。 运行hello world的web服务器每秒可以处理10000个请求,同一个web服务器后面的每秒处理0.0001个请求。
你需要什么样的服务器? 你需要一个知道自己在做什么而不是新的服务器的人。 但要回答你的问题是一个很大的问题。