gpt4 book ai didi

ruby - 我的网络服务器应该有什么样的进程和线程比例?

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:57 27 4
gpt4 key购买 nike

如果我正在运行一个由像 Puma 这样的网络服务器支持的 Ruby 应用程序,它可以让你结合进程和线程,我应该使用的每个应用程序的数量是多少?假设我的代码当然是线程安全的(并且我正在运行支持 native 线程的 Ruby 实现)。当然,我不要求具体数字,只是要求理论上表现优于其他比率的一般比率。

如果线程更快,因为它们使用的内存很少,那么我不应该只使用线程吗?但话又说回来,我听说混合模型(线程和进程的组合)是最好的方法。我还听说我应该将进程数与内核数相匹配;是真的吗?

最佳答案

这可能不是您想听到的,但是:视情况而定。我认为,即使给出一个比率也有点手忙脚乱。有很多变量会影响性能(硬件可能是最大的变量:RAM、内核数量等)。

我遇到了一个“类似的问题”,我想找出多少 unicorn worker(应用程序 worker)和 nginx worker 最适合我的应用程序(以及缓存会产生什么影响)。

我发现回答此类问题的最佳方法是运行一些基准测试。这或多或少是我所做的:

我写了一个运行 apache bench 的脚本(ab) 在我想测试的一些 url 上 3 次。

function run_apache_bench() {
ab -n $N -c $C -g "results/${ID}/root_${1}.tsv" url1
ab -n $N -c $C -g "results/${ID}/index_${1}.tsv" url2
ab -n $N -c $C -g "results/${ID}/show_${1}.tsv" url3
}

在具有不同数量 worker 的不同码头容器上。 (在生产中使用的相同硬件上。)然后我用 gnuplot 绘制了结果并得到了这样的东西:

2 个 unicorn worker 和 1 个 nginx worker 的例子:

enter image description here

4 个 unicorn worker 和 4 个 nginx worker 的示例:

enter image description here

奖励示例:这是启用“俄罗斯娃娃缓存”后显着的性能改进:)

enter image description here

但我想指出一些问题:

  • 我没有测量内存使用情况
  • Apache bench 不会“触发”javascript/css 请求( Assets ),这意味着我基本上只是在测量 html 渲染。
  • 设置基准(自动化容器构建等)很痛苦

希望对您有所帮助。

关于ruby - 我的网络服务器应该有什么样的进程和线程比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com