我无法处理来自同一 IP 的并发耗时请求。
- 第一个请求应该需要 6 分钟才能响应(这是正常现象,我的问题不是关于减少响应时间)
- 第二个请求的响应时间应少于 100 毫秒。
发生的情况是,服务器正在等待第一个请求完成后再发送第二个请求响应。
我的配置是具有 2 个 vCores 的 AWS EC2(我相信这对于处理并发计算很有用)。
请求经过 Nginx 服务器,到达 php-fpm 进程。我以为问题是我错误配置了 PHP-FPM。然而,在阅读了信息后,这是我的 php-fpm 配置:
$ cat www.conf | grep max_children
; static - a fixed number (pm.max_children) of child processes;
; pm.max_children - the maximum number of children that can
; pm.max_children - the maximum number of children that
pm.max_children = 5
$ cat www.conf | grep start_servers
; pm.start_servers - the number of children created on startup.
pm.start_servers = 2
$ cat www.conf | grep min_spare_servers
; pm.min_spare_servers - the minimum number of children in 'idle'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers = 1
$ cat www.conf | grep max_requests
;pm.max_requests = 500
$ cat www.conf | grep max_children
; static - a fixed number (pm.max_children) of child processes;
; pm.max_children - the maximum number of children that can
; pm.max_children - the maximum number of children that
pm.max_children = 5
我遗漏了什么?我应该在哪里调试该行为?
如果您需要更多信息来帮助我,请随时在评论中告诉我,我只是一个初级人员......
谢谢大家,祝大家周末愉快
答案1
您运行的 PHP 工作者数量确实很少,因此可能是第一个请求使用所有可用的工作者来完成,因此第二个请求被阻止。
尝试以下设置:
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
实际有用的数字取决于您的实际流量。基本上,max_children
是可以同时处理单个请求的最大可用工作器数量,您需要有一个与您的流量相匹配的适当值。