You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
set_timeout() fails to terminate execution when IO Latency is high #11971
I'm not sure if this is a bug or not and I haven't found the proper channel to ask (shall I raise a discussion in Internals?).
We faced a problem in our production cluster. Our setup is following:
SAPI: fpm
max_execution_time: 28
hard_timeout: 2
When Opcache is reloading, we're having excessive IO pressure, which is expected - PHP starts reading everything from disk, etc... However, scripts started executing for 5+ minutes - that wasn't expected.
Further investigation showed that zend_set_timeout_ex uses setitimer(ITIMER_PROF) by default, which means the time the process spends in IOWait doesn't seem to count.
So, basically, even though our gateway cannot wait for such long - it expects that application will finish earlier, PHP still performs the request. One more backside of such behaviour - the restart of Opcache takes longer - it waits until all the workers finish execution (or become killed by opcache when opcache.force_restart_timeout is reached).
This problem doesn't seem to appear when we use ITIMER_REAL. I can provide how we tested this.
I can see a couple of solutions here:
Switch to ITIMER_REAL (it looks like there are some concerns about the Apache module)
Choose one over another for some SAPIs when we are sure that there shouldn't be a conflict (e.g. FPM, CLI)
Make this behaviour configurable (either at runtime or compile time)
Oh, that's interesting @KapitanOczywisty! As far as I can see it didn't go forward. Any reason for that?
Would it be possible to re-open that activity?
Activity
KapitanOczywisty commentedon Aug 14, 2023
There is RFC to add wall time limit https://wiki.php.net/rfc/max_execution_wall_time
mikhainin commentedon Aug 14, 2023
Oh, that's interesting @KapitanOczywisty! As far as I can see it didn't go forward. Any reason for that?
Would it be possible to re-open that activity?
KapitanOczywisty commentedon Aug 14, 2023
I wasn't following progress of that, but you can read about that: #6504 https://externals.io/message/112492