我问这个问题只是为了确保或了解服务器可以承受多少或何时会失败,我有一个具有 8 GB RAM 和 2 VCPU 的 Amazon EC2 实例,它运行一些仅返回 json 响应的 php 脚本,服务器上没有媒体文件或任何其他类型的数据,只有 mysql 数据库,每个对服务器的请求从 mysql 返回 16KB 到 20KB 我使用的查询不是那么复杂,也不是那么容易,它相当中等,假设响应大小为 20KB,带宽无限,我的问题是服务器可以处理多少个 http 请求,我不想要一个准确的答案,只是近似值,这样我就可以了解一个瞬间可以处理多少
答案1
甚至无法猜测。这取决于很多变量。应用程序使用多少内存/CPU 来生成 json。您的 sql 查询优化程度如何。进行连接?下订单?数据库有多大?您正在搜索的表有多大。
您需要利用您所拥有的内容并运行一些基准测试工具来亲自找出答案。
看看类似的东西
答案2
即使你进行了负载测试和微基准测试,也无法完全说明你的应用程序的运行情况。
有太多因素,即使对于一个简单的众所周知的应用程序,99% 的时间可以承受高负载,它也可能会有一些模糊的操作,可能会冻结它几分钟。例如:
- 文件系统快照
- VM 快照
- 同一主机上的其他虚拟机
- 同一存储上的其他虚拟机
- 同一网络路径上的其他虚拟机流量
- 客户行为,包括攻击(例如懒猴)
- 您的代码的可扩展性如何
- 即使它可以在 1 秒内运行 500 个顺序请求,但在相同时间内运行 50 个并发请求也可能会遇到问题
- 硬件特定的东西,将使响应时间与输入相比呈非线性
- MySQL 中的数据会随着时间的推移而增长,从而导致其速度越来越慢。
那么解决方案是什么?监控、全栈基准测试。使用来自生产的记录/模拟数据进行基准测试。这是一个过程。
我建议阅读:如何对网站进行负载测试和容量规划?