负载平衡PHP程序以支持不断增加的用户?
我有一个PHP程序,它是在考虑单个服务器的情况下编写的,因此它可以处理的量存在固有的限制。例如,开发人员说,他目前的网络托管服务为他提供了“50个MySQL连接”,他解释为只有50人可以同时登录 如果我们想扩大它的规模,使它能够处理500或更多的负载,我们需要做什么?我们如何将此程序调整为“负载平衡器”,而只需最少的更改负载平衡PHP程序以支持不断增加的用户?,php,mysql,load-balancing,Php,Mysql,Load Balancing,我有一个PHP程序,它是在考虑单个服务器的情况下编写的,因此它可以处理的量存在固有的限制。例如,开发人员说,他目前的网络托管服务为他提供了“50个MySQL连接”,他解释为只有50人可以同时登录 如果我们想扩大它的规模,使它能够处理500或更多的负载,我们需要做什么?我们如何将此程序调整为“负载平衡器”,而只需最少的更改 应用程序是用PHP编写的,并使用MySQL。MySQL连接只有在打开时才算作正在使用。例如,如果我连接到一个Web服务器来获取一个页面,那么实际创建该页面并将其发送给我只需要5
应用程序是用PHP编写的,并使用MySQL。MySQL连接只有在打开时才算作正在使用。例如,如果我连接到一个Web服务器来获取一个页面,那么实际创建该页面并将其发送给我只需要50毫秒左右(猜测)。这意味着它可以在1秒内通过1个MySQL连接提供20个页面。用户在将页面发送到浏览器后对页面所做的操作不会影响服务器的性能 因此,50次点击时,你必须每秒获得大约1000次点击才能引起问题 如果出现问题,您可以提前关闭MySQL连接(而不是让它们在脚本关闭时终止)
老实说,我不认为这是你所认为的问题——如果你有足够的流量让它真正成为一个问题,那么这就是我们所说的“一个很好的问题”:)无论主机设置了什么限制,只要可能,你都应该明智地限制你的查询。如果您使用共享主机,或者拥有10个机架,其中装满了完全由您支配的服务器,则会出现这种情况 呈现页面所需的查询越少:
- 更快的数据库连接被关闭,从而允许RDBMS释放内存
- 更快的连接资源被关闭,允许应用程序释放内存
- 更快的HTTP服务器进程退出,允许它们释放内存
- 用户获取所需信息的速度越快
至于,首先决定一个方案。然后决定如何最好地分配工作。在某些情况下,您可以从一个从机读取数据并向另一个从机写入数据,在其他情况下,您需要使用某种反向代理,无论是硬件还是软件。在这方面,你的问题过于笼统,无法提供更全面的答案。我不同意“尽可能限制你的查询”的原则。这个数字应该是合理的,而不是不惜任何代价降低。它通常会产生奇怪的问题“如何在一次查询中获得完全不同的信息”。大多数情况下,查询的数量取决于适当的架构师,而不是性能。性能调优并不是减少查询数量。但是基于分析的查询/数据库优化是。@Col.shrapanel:只要有可能,我就说
,敏感度
会进入任何确定可能的过程。不过,为了清晰起见,我将进行编辑。它仍然不能解决负载平衡和真正的性能优化问题question@Col.弹片:你,我过于直率的笔友,也可以自由地扩展你的答案:)@Tim-谢谢Tim的解释性答案。你对我如何“压力测试”这个简单的应用程序有什么见解吗?看看它会破坏多少concurrnt用户?你能更具体地说明一下负载平衡器吗?我以为php重用了MySQL连接。。编辑:查了一下,显然有一个名为mysql\u pconnect()
[,但它实际上可能会导致连接耗尽,因为Apache的性能不好。我想说的是,您应该总是尽早关闭任何连接,而不仅仅是在出现性能问题时。