I noticed that if you have too few pm_children set then some requests hang until timeout. This surprised me - I'd expect an immediate error, but it's more like a tarpit! For ages I was thinking my server was not performant, then I noticed via top that it wasn't doing or waiting while the browser was.
I have two questions:
-
If you have
pm_max_children=1and you occupy that and submit another request, what actually happens? (I'm proxying through nginx.) HTTP doesn't have a "40_ Come back later". -
(if life deals you lemons...) if you can generate a tarpit that doesn't use server resources, this could be quite useful to know about too!
4 Comments
Max_P@lemmy.max-p.me · 3 pts · 1y
FPM uses a request queue, so when all workers are busy they wait in line until a worker frees up to process it. With just 1 worker, this can take a long time to catch up, but with a reasonable number of workers you'll only wait a few seconds or even milliseconds depending on the app and how fast it can process requests.
The setting for that is
listen.backlogwhich defaults to 511 on Linux.nettie@lemmy.world · 1 pts · 1y
Right Thanks. So I think php might queue then forget some requests, because I've had this behaviour without too much traffic. I just don't know how to reproduce it, but maybe I'll try with that listen backlog setting, thanks for tip.
Max_P@lemmy.max-p.me · 2 pts · 1y
It doesn't forget requests, but NGINX will drop them after it times out if it takes too long.
humble_pete_digger@lemm.ee · 1 pts · 1y
When will the core php get async? Sick of it