Apache Timeout (страница загрузки проблемы) на локальном хосте

Я запускаю php-скрипт локально в моем браузере Firefox. Ровно через 300 секунд я получаю страницу с ошибкой. «Проблема при загрузке страницы. Время соединения истекло. Сервер localhost слишком долго не отвечает». Скрипт все еще работает, но он кажется мне очень медленным.

Предположение: причиной появления страницы ошибки является тайм-аут Apache (так как он установлен на 300). Но я не понимаю, почему это происходит. Это не первый раз, когда я запускаю скрипт php, который занимает много времени. Иногда мои сценарии запускаются в течение нескольких дней. Этот конкретный скрипт читает данные публикации из таблицы InnoDB (350 тыс. Записей) и разделяет авторов по точкам с запятой. Эти имена авторов затем записываются обратно в другую таблицу.

1117 Простое увеличение таймаута не является решением проблемы. Мне нужно исправить то, что вызывает тайм-аут. Без сомнения, это также причина, по которой мой скрипт работает так медленно.

Я нашел причину медленных вставок: поскольку я использую InnoDB, я должен был обернуть свои вставки в транзакцию / коммит.

И возможная причина тайм-аута: при указании 127.0.0.1 в Unix вместо сокета UNIX будет использоваться TCP / IP.

На http://httpd.apache.org/docs/2.2/mod/core.html#timeout я могу прочитать, что «директива TimeOut определяет продолжительность времени, в течение которого Apache будет ожидать I / O при различных обстоятельствах: при чтении данных от клиента - время ожидания прибытия пакета TCP, если буфер чтения пуст. При записи данных клиенту - время ожидания подтверждения пакета. если буфер отправки заполнен. [...] ".

Я был бы очень признателен за любую помощь, такую ​​как инструкции по просмотру определенного файла журнала или запуск определенной команды для получения дополнительной информации. Насколько я знаю, тайм-аут Apache связан с интернет-трафиком, но я ни к чему не подключаюсь, так что ... ну, я потерян. Google тоже не помогает.

Некоторая информация об окружающей среде:

  • PHP 5.3.10-1ubuntu3.11 с Suhosin-Patch (cli) (сборка: 4 апреля 2014 г. 01:30:04)
  • mysql Версия 14.14 Distrib 5.5.37, для debian-linux-gnu (x86_64) с использованием readline 6.2
  • Ubuntu 12.04.4 LTS, универсальный 3.5.0-51
  • FRITZ! Box Fon WLAN 7360 , FRITZ! OS 06.04
  • LAN 2 со скоростью 100 Мбит / с (зеленый режим вместо режима питания 1 Гбит / с)

Я использую 12,0 ГБ памяти 125,9 ГБ. Нет своп. Средняя нагрузка около 2,3. И еще 1,9 ТБ свободного дискового пространства.

Что я пробовал до сих пор:

  • «Работа в автономном режиме» в моем браузере
  • Перейти к 127.0.0.1 вместо localhost
  • В httpd.conf Я изменил ServerName Localhost на 127.0.0.1:80
  • В сценарии php сначала получите все данные, закройте набор результатов, а затем работайте с массивом.

Всякий раз, когда я вносил изменения в файл конфигурации, я перезапускал apache2 и mysql.

Скрипт php:

set_time_limit( 0 );
ini_set( 'display_errors', 1 );
ini_set( 'memory_limit', '4G' );
error_reporting( E_ALL|E_STRICT );
$mysqli = new mysqli( 'localhost', 'root', 'mypassword', 'WoS_Mexico_1990-2014' );
if ( $mysqli ) {
    $sql = 'SELECT `ID`, `AU`, `AF`, `C1`, `RP`, `EM`, `RI`, `OI` FROM `WoS`;';
    if ( $result = $mysqli->query( $sql ) ) {
        while ( $row = $result->fetch_assoc() ) {
            // do some things such as explode strings into arrays
            $sql = 'INSERT INTO ...';
            $mysqli->query( $sql );
        }
        $result->close();
    }   
    $mysqli->close();
}

У меня есть skip-name-Resolution в my.cnf.

В аналогичной теме кто-то опубликовал результаты netstat, так что вот мои.

daigu@Jiriki:~$ sudo netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      7423/mysqld     
tcp        0      0 127.0.0.1:5939          0.0.0.0:*               LISTEN      2256/teamviewerd
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2281/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1247/cupsd      
tcp6       0      0 :::80                   :::*                    LISTEN      7390/apache2    
tcp6       0      0 ::1:631                 :::*                    LISTEN      1247/cupsd      

mysqld находится на tcp, а apache2 на tcp6. Это проблема?

Просматривая различные файлы журнала, я заметил, что также страдаю от спама в UFW.

7 июня 13:34:29 ядро ​​Jiriki: [88803.827685] [UFW BLOCK] IN = eth1 OUT = MAC = 01: 00: 5e: 00: 00: 01: 08: 96: d7: af: 89: 26 : 08: 00 SRC = 192.168.178.1 DST = 224.0.0.1 LEN = 36 TOS = 0x00 PREC = 0xC0 TTL = 1 ID = 0 DF PROTO = 2

daigu @ Jiriki: / var / log $ sudo ufw подробный статус Статус: активный Ведение журнала: включено (низкое) По умолчанию: отказать (входящий), разрешить (исходящий) Новые профили: пропустить

Кроме того, apache2 / error.log довольно большой. Последняя строка:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/http.so' - /usr/lib/php5/20090626/http.so: cannot open shared object file: No such file or directory in Unknown on line 0

[Пт, 06 июня, 19:32:12 2014] [примечание] Apache / 2.2.22 (Ubuntu) PHP / 5.3.10-1ubuntu3.11 с настроенным Suhosin-Patch - возобновление нормальной работы

Но это, кажется, старая проблема, которая впервые появилась 16 февраля.

Тайм-аут больше не возникает, хотя, насколько я знаю, я не внес никаких изменений в какие-либо файлы конфигурации.

1137] И чтобы ответить на вопрос Брайама: в логах Apache не было ничего, что указывало бы на неправильную конфигурацию. Все работало просто отлично, и скрипт php продолжал работать (как и должно быть), даже если мой браузер показывал Timeout.

1
задан 29 August 2014 в 14:18

0 ответов

Другие вопросы по тегам:

Похожие вопросы: