最小化响应时间,最大化每秒请求数

最小化响应时间,最大化每秒请求数

我正在测试各种 Ruby on Rails 托管解决方案,包括 nginx、apache、一些不同的 ISP 和云计算系统等。

我注意到,当只有一两个同时处理的请求时,这些请求的平均响应时间通常很短(<10 毫秒)。但是,我只能处理这么多的流量。但如果我试图最大化每秒的请求数,平均响应时间就会增长得相当快。例如,在一台服务器上,我发现在任何时候同时处理大约 16 个请求时,每秒的请求数达到最大值。然而,此时,平均响应时间超过 200 毫秒。

我想知道,网络服务器专家们有什么技巧和窍门来平衡响应时间和每秒请求数?

答案1

你应该读一下C10K 问题。一般来说,它涉及应用程序架构、可扩展性和如何实现大规模并行性。我对此的补充是:从小处着手,不要过度设计主题,大多数 Web 服务不会立即需要这种可扩展性。尝试从 C10k 功能开始可能需要太多时间才能“正确”,并且您永远不应忽视服务的核心内容。拥有一个没有内容的 C10k 功能网站等于一个死网站。

答案2

首先要确定的是,它是您的应用程序还是服务器?

每个解决方案的静态文件性能如何?您是否能够以合理的结果提取 50k 图像?您确定是 ruby​​ 堆栈导致了问题吗?

有很多部分可能会导致问题,甚至包括应用程序、后端数据库、文件存储等。根据您的代码,有相当多的部分可能会引发并发问题。尝试编写一个非常基本的测试应用程序,看看您可以获得什么样的基准,然后添加一些部分来查看导致问题的原因。查看一些分析精华,看看您是否可以使用它们来确定您的应用程序花费最多时间的地方。

相关内容