Apache httpd ошибка и сбой - PullRequest
       12

Apache httpd ошибка и сбой

2 голосов
/ 27 ноября 2009

У меня установлен сервер WAMP 2.0 на Win XP. Версия Apache: 2.2.11 Версия PHP: 5.3 MySQL: 5.1.36

У меня есть около 11 таблиц в MySQL. Каждый запуск моего веб-приложения (HTML / Jquery / PHP / MySQL) заполняет около 100 строк в 2 таблицах. (В одной из таблиц есть 2 столбца длинных больших двоичных объектов, куда загружаются данные размером до 20 МБ, я менял размер Max_allowed_packet до 32M в файле my.ini)

Приложение работает нормально около 3 недель, пока количество строк в одной из таблиц не достигнет> 1500.

Затем я вижу сообщение об ошибке httpd (Apache httpd обнаружил ошибку и должен быть закрыт ) и это говорит о незаконном обращении к памяти Пожалуйста, найдите ниже некоторые журналы

szAppName : httpd.exe     szAppVer : 2.2.11.0     szModName : php5ts.dll     
szModVer : 5.3.0.0     offset : 0000c309     


C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\httpd.exe.mdmp
C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\appcompat.txt

Если я очищу две таблицы (1500> строк). Тем не менее проблема видна.

Я использую PDO PHP для обновления таблиц.

Может ли кто-нибудь направить меня, поскольку это становится блокирующим.

С уважением, Митхун

Ответы [ 2 ]

3 голосов
/ 01 декабря 2009

ПРОБЛЕМА:

У меня есть подозрение, что вы попали в стену размером 2 ГБ. 2 проблемы с вашей настройкой:

  • Первая проблема: вы запускаете это в Windows.
  • Вторая проблема: вы запускаете это на Windows. : -)

ПРИЧИНА:

Шутки в сторону, Mysql хранит данные в своей корневой папке (например, C: \ Program Files \ MySQL \ MySQL Server 5.0 \ data). Каждая подпапка соответствует БД в вашем экземпляре MySQL. Внутри каждой папки есть файл с расширением .frm, который соответствует вашим таблицам. Посмотрите, приближается ли таблица, в которой вы храните свои загрузки, к пределу 2 ГБ. Учитывая, что у вас есть столбец, в котором хранятся загруженные строки UP 20 МБ * 1500 - это примерно 2 ГБ (при условии, что большинство ваших файлов меньше 20 МБ) файлы размером более 2 ГБ - ограничения файловой системы и ОС. Это та же самая причина, по которой люди сталкиваются с проблемами со своим мировоззрением - потому что они не сортируют и не чистят свои электронные письма.

РЕШЕНИЕ:

Третья проблема - вы храните двоичные данные в БД, но это не очень хорошая идея. Сохраните его на диске - и просто сохраните ссылку на него (имя или путь) в своей базе данных. Или вы можете сохранить текущие настройки на некоторое время, если перейдете на систему ** nix *, которая поддерживает файлы большего размера. Но это все равно плохая идея хранить двоичные данные такого размера в вашей БД напрямую. Это также замедляет поиск в БД и делает НАМНОГО медленнее (так как в MySQL нет простого инкрементного резервного копирования)

Надеюсь, это поможет.

EDIT:

Я забыл упомянуть, поскольку вы используете WAMP, ваша папка MySQL будет в вашей папке установки WAMP. По умолчанию я думаю, что это должно быть в c: \ wamp \ mysql \ data - но я точно не помню. Я обычно использую XAMMP в Windows.

1 голос
/ 01 декабря 2009

Есть много возможных причин, почему это происходит. Вы храните в памяти массив всех объектов размером 20 МБ? По мере роста вы можете увеличивать размер каждого процесса apache до такой степени, что у вас недостаточно памяти.

...