我们最近更新了我们的服务器到一个更强大的设置,因为我们期望更高的用户数量。我们在服务器上运行一个Laravel 7.28.4应用程序,用户通过按顺序访问大约10个网页来与之交互,他在其中的3个网页中提供数据并将它们发布到服务器,服务器将它们放入数据库中。然后,服务器将发送一封电子邮件,告知一切都已完成。
现在我们用Apache JMeter做了一个压力测试,每小时有近130.000次访问,我们精确地为每个线程重现了这个10步序列。请求是立即连续完成的,服务器很容易处理它。我们在这里使用了大约250个线程。
然而,如果我们做一个压力测试,每小时只有60000次访问,在每个请求之间有更多的线程和等待时间,服务器会完全超负荷工作和缓慢。许多请求得到错误503或522。这里我们使用了大约500个线程。
在进行这些压力测试时,服务器的RAM使用率为5-6%,CPU使用率为10-12%。我不认为数据库/邮件服务器/硬件是瓶颈,如果在处理更多请求时一切都运行良好。
然而,我猜Laravel很难同时管理多个会话?我已经尝试将会话驱动程序交换到数据库,而不是文件存储。结果也好不到哪里去。
有人知道我可以做些什么来提高服务器的响应时间吗?或者,可能还有其他想法来解释为什么它正在与更多的线程作斗争?
谢谢
发布于 2021-01-25 13:18:08
根据12 Tips for Laravel Performance Optimization in 2020的文章,我不认为使用文件或数据库是一个合适的选择:
选择快速缓存和会话驱动程序以获得最佳的Laravel性能调优,最佳方法是将缓存和会话部分存储在内存中。我认为Laravel 5性能最快的缓存和会话驱动是Memcached。
用于更改会话驱动的驱动密钥通常位于app/config/session.php中。同样,用于更改缓存驱动程序的驱动程序键位于app/config/cache.php中
至于你的测试本身,既然它做了应该没问题的工作,但是你的“每小时访问次数”方法听起来有点奇怪,我宁愿将JMeter配置为完全像一个真正的用户一样使用真正的浏览器,包括在操作之间的“思考时间”和操纵线程的数量-这样我就能够声明系统支持X个并发用户而没有问题。
更多信息:What is the Relationship Between Users and Hits Per Second?
https://stackoverflow.com/questions/65861045
复制相似问题