Re-compiling PHP changes server responsiveness
Michael Powell
nightrecon at hotmail.com
Thu Dec 17 10:31:34 UTC 2009
Matthew Seaman wrote:
[snip]
>> I get: "[warn] (2)No such file or directory: Failed to enable the
>> 'httpready' Accept Filter, and no new errors in
>> /var/log/httpd-error.log" four times
>>
>> Tried adding accf_http="YES" to /boot/loader.conf, and re-booting of
>> course.
>
> This is just a warning message and doesn't stop apache working or not.
> Enabling accf_http should give you a bit of a performance boost under
> heavy load and help you withstand certain types of DoS attack, but it's
> not required.
>
I found I needed both accf_data_load="YES" and accf_http_load="YES", but I
am also running SSL too. I've also noticed that I tend to not receive this
error when Apache starts after a fresh system boot. Have never tried to
examine it further as I don't reboot or restart Apache very often. It just
seemed happier when I added the http_load into the mix and only spews the
error at non-reboot restarts.
[snip]
>> What else should I look at?
>>
>
> Try restarting httpd from the command line: /usr/local/etc/rc.d/apache22
> restart
>
> This will run a configtest and then try and start up apache. Then check
> that apache is still running: /usr/local/etc/rc.d/apache22 status
>
> If apache has mysteriously disappeared and there are no messages in log
> files, then it means apache crashed during the startup process soon after
> daemonising. That's pretty diagnostic for loading a dynamic module that
> disagrees with it.
>
> At a guess, and given that you've reinstalled all your php modules, I
> think you
> may be being hit by the php module load order problem. In that case,
> running
> php from the command line will probably also segv on you. This is
> something that has had quite a lot of attention on this list, but there
> isn't a really good solution yet, other than manually reordering the
> entries in /usr/local/etc/php/extensions.ini
>
> Also, if you're running eAccelerator, make sure you recompile it at the
> same time you upgrade the main lang/php5 port: eAccelerator will cause
> Apache to crash if you try and run it against a different version of PHP
> than it was originally compiled for.
>
The same would apply whether it was xcache or the Zendoptimizer.
The way to pin the problem down is to rename extensions.ini temporarily to
extensions.ini.bak and comment out the
#LoadModule php5_module libexec/apache22/libphp5.so line temporarily.
Start/restart Apache and if it works OK with serving static content it
confirms the problem is PHP. Then add the Loadmodule line again in
httpd.conf and restart. If it restarts with no errors and again serves
static pages fine the PHP module itself is OK. Trying to run something like
a CMS will still be error prone as the various modules it needs aren't being
loaded and found, as the extensions.ini file is still renamed.
Note that if Apache is happy with mod_php while extensions.ini is still
renamed it also confirms no major flaw in the php.ini file.
If Apache runs fine with the mod_php module then the trouble is in the
extensions. Rename the extensions.ini back to it's original state. There is
a script that may be run to realize a close approximation of the extension
loading order problem: fixphpextorder.sh which can be found here:
http://www.pingle.org/2007/09/22/php-crashes-extensions-workaround
That is a stab at the reordering problem, but in my case was not enough to
completely solve my problem. I also had to comment out extension=mhash.so
with a ";". This was arrived at by commenting out line by line one at a time
until I hit the one causing the breakage. This particular extension has been
problematic for me for some time now. Some upgrades it works and for some it
is broken. Remember that each change made requires an apachectl restart.
-Mike
More information about the freebsd-questions
mailing list