Laravel 5 可以处理 1000 个并发用户而不会严重滞后吗?

Raj*_*Raj 18 php performance laravel laravel-5

我想知道,如果 1000 名用户同时使用使用 laravel 5 构建的网站并定期查询数据库,那么 laravel 5 的性能如何?我知道这会很慢,但会不会太慢以至于无法忍受?请注意,我还将大量使用 ajax。

假设我正在使用具有以下配置的数字海洋云服务

2GB memory
2 vCPU
40GB SSD
Run Code Online (Sandbox Code Playgroud)

我不期望完全真实的数字,因为这是不可能的,但至少提供一些细节,我是否应该使用具有可观性能的 laravel。

还请提供一些工具,通过它们我可以检查我的 laravel 5 应用程序的速度,以及它在实际负载时的执行情况,以及我可以通过它测试速度和性能的其他工具。

如果有人有实际使用 Laravel 尤其是 Laravel 5 的经验,那就太好了。

那么 Lumen 真的使应用程序比 laravel 更快吗?有多少?

小智 13

简而言之,是的。至少较新版本的 Laravel 是有能力的(Laravel 7.*)
话虽如此,这确实是一个由部分组成的难题。


1. Laravel (PHP)


老实说,我无法提供这篇精彩文章所提供的一半细节。从并发的定义一直到pre-optimization times vs. after-optimization times.



2. 读取、写入和分区持久数据(数据库)


我很好奇真正关心的是 Php 的 Laravel,还是更多的数据库读/写速度计时瓶颈。非关系型数据库是一项令人难以置信的技术,它比传统的关系型数据库更有利于大数据。

  • 非关系数据库 (Mongo) 的读取速度比 MySql 快得多(如果我没记错的话,大约快 60%)
  • 非关系型数据库 (Mongo) 确实具有较慢的写入速度,但这通常不会影响用户体验
  • 与关系数据库 (MySQL) 不同,Mongo DB 可以真正分区,分布在多个服务器上。
  • Mongo DB 有文档集合,集合是表的同义词,文档是行的同义词。
  • 不同之处在于,MongoDB 有一种非常类似于 JSON 的感觉。(文档集合,其中每个文档看起来像一个 JSON 对象)。
  • 巨大的差异和好处是每个文档——也就是行——没有相同的密钥。当在财富 500 强项目中使用 mongo DB 时,我当时的导师兼领导 Logan 引用了一句惊人的话。

蒙戈不在乎

这意味着您可以调整数据的检索方式,因此不仅读取速度更快,而且通常不会因必须从多个表中检索数据而减慢速度。

这是一个经过亲自测试和喜爱的软件包,用于在 Laravel 中设置 MongoDB

如果您担心大量用户和传输数据,那么 MongoDB 可能就是您所需要的。有了这个,让我们继续第三点,也是最重要的一点。


3.无服务器架构(又名水平扩展)


Aws、谷歌云、微软 Azure 等……我相信你听说过

如果您遇到并发问题并希望留在 Laravel 的范围内,这最终就是您要寻找的。

这是一个令人难以置信的工具的全新世界,你可以敲打——它们太棒了。它也是一个全新的、相当大的、有很多工具和思想可供学习的世界。

首先,让我们深入了解一些无服务器概念。

  • 基础设施即代码Terraform

    “使用基础设施即代码来配置和管理任何云、基础设施或服务”

  • 通过云的水平扩展示例

    “创建一个 Laravel 应用程序。它是一个单一的应用程序,单体。然后你潜入 Cloud。你发现了 Terraform。啊哈哈,首先你使用 terraform 来定义你的应用程序将同时运行多少个实例。你决定你的应用程序需要 8 个实例. 接下来,您当然定义了一个负载均衡器。负载均衡器只是在您的 8 个应用程序实例之间平衡流量负载。每个应用程序都连接到同一个数据库,最终共享同一个数据源。您只是将流量分散到同一应用程序的多个实例。”

  • 我们当然可以顶一下,非常简化的云的回答,并潜入lambda表达式中,什么不是做无服务器的公司,如何设置内部虚拟云网络...

或者……我们可以提前感谢 Laravel 团队简化无服务器架构

Laravel Vapor 开头段落

Laravel Vapor 是 Laravel 的自动扩展、无服务器部署平台,由 AWS Lambda 提供支持。在 Vapor 上管理您的 Laravel 基础设施,并爱上无服务器的可扩展性和简单性。


接近尾声,让我们总结一下。

口腔问题

能够在一定时间内处理一定数量的流量

具有潜在解决方案的潜在瓶颈

Laravel 和 PHP

高效地保存/检索数据

用于水平扩展的无服务器架构

  • 我想补充一点,缓存可以为您提供很大帮助。目前,当我需要检索和处理迭代数据时,我使用缓存,因此只有第一个执行请求的用户才会注意到延迟......因此,这也是您如何编码的问题 (2认同)

小智 1

我认为 Laravel 无法做到这一点。

我尝试使用 8 核 CPU、8 GB RAM 和 120GB HDD 对 Laravel 进行基准测试,每秒只收到 200-400 个请求。

  • 为了进行比较,我们的应用程序使用自定义框架,每台服务器每秒处理 500 个请求,而不会出现恐慌。一个应用程序在 2vCPU/4GB 上运行,另一个应用程序在 4vCPU/8GB 上运行 - 两者都是“正常”的,涉及数据库等和全套日志记录/错误处理等,但它表明它取决于应用程序。但 Laravel 包含很多臃肿的内容;如果您想快速启动应用程序或不担心内部结构,那么这很好,但如果您需要性能,则不然。 (2认同)