如何确定是否应该在 apache 中使用 KeepAlive?

如何确定是否应该在 apache 中使用 KeepAlive?

我已阅读了有关 KeepAlive 的一些帖子和问题,但没有找到适合我的。

我有一台服务器,只有一个客户端(Trivago),每秒执行数百个(酒店空房情况)请求。对于每个请求,我都必须向第三方服务器请求价格。因此流程如下:

Trivago 询问可用性和价格,我向第三方供应商询问这些信息,我收到这些信息,执行 PHP 逻辑,并向 Trivago 返回 json 响应。

服务器详细信息:

CentOS Linux 7
Plesk Onyx (uses nginx & apache)
4 cores
8GB

PleskPHP 配置php-fpm 指令

pm.max_children    250
pm.max_requests    1000
pm                 ondemand

httpd.conf:

ServerLimit           16
MaxClients           400
StartServers           3
ThreadsPerChild       25
ThreadLimit           64

使用这个,我每个进程可以获得 12.5MB 的 RAM,理论上,这允许我使用 6GB 的 RAM 同时运行最多 500 个进程:

ps -ylC httpd --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'

问题:

  • 我应该使用 KeepAlive 吗?由于 Trivago 正在发出数百个请求,我如何确定是否正在使用相同的“打开/建立连接”?

其他资源的利用看起来一致:

网络 中央处理器 mysql 内存

apache 内存使用情况如下所示:

阿帕奇 RAM

是我错了还是因为 KeepAlive 导致的?

顺便说一下,这些是流量低时图。流量高时 Apache 内存使用量接近 8GB 限制。

谢谢。


编辑:

这被标记为重复,是的,它可能是重复的,但我比这个问题领先一步。我已经监控了系统,通过 JMeter 添加了流量,评估了结果并补救了一些问题。因此,我会问一个更简单的问题:

  • Apache 图表看起来是否像我应该将 KeepAlive 设置为关闭?

我理解这里的方法是启动它并测试它,但是由于服务器现在正在生产中(我在使用 JMeter 时没有看到这个图表),所以我不能。

相关内容