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
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)
Something else?
The text was updated successfully, but these errors were encountered:
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?
Description
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
usessetitimer(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:
ITIMER_REAL
(it looks like there are some concerns about the Apache module)The text was updated successfully, but these errors were encountered: