0

假设我需要设计一个 Web 服务。为简单起见,假设我使用LAMP (Linux-Apache-MySQL-PHP)。

我知道我将N每秒准确地处理用户请求。这些请求基本上是对数据库的简单CRUD操作,没有文件上传或复杂的计算。

假设每个请求都执行Mms 并K在我的服务器上占用 Mb 的内存,并具有GGb 的 RAM。

我需要多少这样的服务器?只是N * K / G吗?

M 的合理值为200ms。合理的价值是K多少?

我们需要在这个问题中考虑 CPU 功率吗?

有什么额外的考虑吗?

4

1 回答 1

1

您正在做的是一个很好的信封近似值,但绝不应该将您的思维练习用作扩展服务的权威指南。

那是因为没有任何服务会表现出您所描述的那种类型的持续行为(如果发生不可预测的外围 i/o、垃圾收集、外部因素、用户输入等)

正确的方法是执行规模和负载测试。编写服务后,开始对服务进行负载测试并注意服务的性能特征。如果你做对了,你应该达到配置最大化的点:CPU、网络吞吐量、内存或磁盘 I/O。如果两者都没有达到极限并且您达到了限制,那么它就是您的上游依赖项之一(您的数据库等)

一旦你达到峰值,它会告诉你每秒可以处理多少个请求。

您还会注意到,在大多数情况下,峰值性能是不可持续的:您的设置可能能够在短时间内爆发,每秒处理比持续负载下更多的请求。

获得单个服务器的数字后,您可以通过两种方式开始改变:

  1. 使用不同的硬件配置进行测试(如果您受内存限制,请添加更多 RAM,如果您受 CPU 限制,请添加更好的 CPU,等等)

  2. 多台服务器测试;开始添加服务器并查看您的服务如何水平扩展

理想情况下,您的服务应该随着您添加服务器而线性扩展,但您可能会发现性能曲线不是线性的。

获取您的数字,调整您的设计。冲洗。重复。

没有替代品,神奇的公式。

于 2016-11-02T06:54:41.863 回答