Это происходит случайным образом, и только на установках Mudle. Apache не добавляет строчки в журналы, когда это происходит, и я не знаю, где искать.
koke@escher:~/Code/eboxhq/moodle[master]$ curl -I http://training.ebox-technologies.com/login/signup.php?course=WNA001
curl: (52) Empty reply from server
koke@escher:~/Code/eboxhq/moodle[master]$ curl -I http://training.ebox-technologies.com/login/signup.php?course=WNA001
HTTP/1.1 200 OK
Конфигурация apache довольно проста и отлично работает с другими хостами.
<VirtualHost *:80>
ServerAdmin webmaster@ebox-technologies.com
DocumentRoot /srv/apache/training.ebox-technologies.com/htdocs
ServerName training.eboxhq.com
ErrorLog /var/log/apache2/training.ebox-technologies.com-error.log
CustomLog /var/log/apache2/training.ebox-technologies.com-access.log combined
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"
Header add Cache-Control public
</FilesMatch>
</VirtualHost>
Использование apache 2.2.9 php 5.2.6 и moodle 1.9.5+ (сборка: 20090722)
Любые идеи приветствуются :)
Наконец решено добавлением к /etc/apache2/envvars
:
export USE_ZEND_ALLOC=0
Посмотрите журнал ошибок основного сервера, в нем должны быть Ошибка дочернего Segfault (11).
Вероятно, это вызвано ошибкой движка PHP, часто вызываемой ошибочным модулем php, обработкой символов Unicode, поврежденной базой данных gettext и так далее.
Отлаживать очень сложно.
Вы можете включить xdebug трассировка и посмотрите, в какой строке происходит сбой:
pecl install xdebug
php.ini:
[xdebug]
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.auto_trace=1 ; enable tracing
xdebug.trace_format=0
xdebug.show_mem_delta=1 ; memory difference
xdebug.show_local_vars=1
xdebug.max_nesting_level=100
В error_log тоже ничего нет?
Вы можете установить MaxServers в 1, а затем привязать этот поток apache при запросе страницы. Может случиться так, что PHP выходит из строя, или дочерний элемент apache умирает по другим причинам.
Кроме того, tcpdump запрос на обоих концах, чтобы увидеть, какие данные отправляются по сети.