推荐的服务器堆栈

我们在我们的networking服务器上做了大约1000次/秒的处理,并且在到达最终的LAMP堆栈之前有caching和平衡层。 我们有6个Apache(Prefork MPM; 2.2.12)+ PHP(5.3.2)服务器,通用的memcache服务于最后的请求,以防止它的清漆上的打击。 现在我们面临的问题是缩放。 我们对响应时间超级批评,如果后端在一秒钟内不响应,我们的反向代理将从后端断开连接。 随着更多的请求/秒,我们面临越来越多的上游错误,我们的LAMP机器无法承受负载。

我们正在重新思考一个新的服务器架构,现在正在寻找一些不错的select。

没有静态图像/没有涉及静态内容。 到达这些服务器的唯一要求是(3个采集数据,1个sedning数据 – 最大2KBdynamic文件)

我们正在研究Apache(worker MPM)+ PHP CLI nginx + PHP FPM

我想知道是否有好的教程或基准报告,我可以参考,如果有任何其他configuration,我可以给一个镜头

感谢Sparsh Gupta

这是一个服务器堆栈很less的信息:

  • 你是要求一个硬件或软件的build议(假设软件)
  • 为什么上游服务器失败? (CPU,networking,磁盘IO,是上游故障的最高级 – 读取数据库或任何types的持久性)
  • 你似乎能够优雅地失败。 无论如何,如果你在一秒钟内超时并返回一些东西,你就是这样做的。 你应该有数字:
    • 多less失败是可以接受的?
    • 何时(date/时间和请求数量)是否通过了可接受的失败率?

我想知道是否有好的教程或基准报告,我可以参考,如果有任何其他configuration,我可以给一个镜头

请不要依赖别人在另一个用例上做的基准。 请为您的数据, 您的客户行为, 您的系统做基准

我可以假设:

  • 收集数据== POST(或者在服务器上存储数据的东西)
  • 发送数据== GET(回答客户端)

这实际上并不重要,但是您是否试图从“发送”服务器“分离”收集服务器?

客户端caching似乎没有帮助你的情况,因为收集部分不可能被caching。

对应用程序体系结构的野蛮猜测(软件方面):

你在用APC吗?

如果你的应用程序可能,我build议切换到一些asynchronous模型。

很粗糙的:

  1. 只需将“收集”作业提交给队列即可
  2. 立即发送一个HTTP 202,将内容位置集合设置为您期望内容出现的位置(或者在客户端是浏览器的情况下,位置为302/303)
  3. 只要你没有工作人员的话就回到一个200默认的内容和
  4. 如果用实际内容完成了200个

硬件明智:

很难说,但似乎只是抛出更多的Apache服务器可以解决这个问题。 你已经有了6个,为什么不只是增加更多的function而已 – 做一些计算开发人员的时间或者硬件更便宜不应该太难。 在任何情况下,我都不会立即丢弃“旧”服务器,只需在您的负载均衡器中为其分配较低的优先级即可。

你也提到了一个“反向代理”(单数)你有没有尝试在这一层扩展?

总的来说,我会说:你似乎有能力扩大抛出更多的LAMP服务器。 你为什么不这样做?