我已阅读了有关 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 正在发出数百个请求,我如何确定是否正在使用相同的“打开/建立连接”?
其他资源的利用看起来一致:
apache 内存使用情况如下所示:
是我错了还是因为 KeepAlive 导致的?
顺便说一下,这些是流量低时图。流量高时 Apache 内存使用量接近 8GB 限制。
谢谢。
编辑:
这被标记为重复,是的,它可能是重复的,但我比这个问题领先一步。我已经监控了系统,通过 JMeter 添加了流量,评估了结果并补救了一些问题。因此,我会问一个更简单的问题:
- Apache 图表看起来是否像我应该将 KeepAlive 设置为关闭?
我理解这里的方法是启动它并测试它,但是由于服务器现在正在生产中(我在使用 JMeter 时没有看到这个图表),所以我不能。