Снова проблема с апачем:child process did nоt exit
GNU/Linux, UNIX, Open Source → Программное обеспечение
напомню, есть веб-сервер на FreeBSD 6.1
установлены Апач 1.3.37+nginx (спасибо Stellarator’y )+ PHP + MySQL.
специфика сервера в том, что один из двух сайтов, крутящихся на сервере, аналогичен по функциональности Youtube — поестители обмениваются видеороликами. выкладываю на сервер свои ролики, там они конвертируются php-скриптом в единый формат и т.д.
так вот. намучалась я с этим конвертером — жуть. первоначально из-за него в часы-пик браузер часто выдавал ошибку недоступности базы данных. Увеличила я в настройках MySQL число одновременный подключений к базе данных, пообщалась с разработчиком конвертера, он чего-то там исправил — и вроде все заработало. не не долго.
сейчас — новая напасть. при включенном конвертере сервер периодически зависает. ход симптомы зависаний такие:
1. Запустили конвертер. (он просматривает очередь из загруженный не обработанных файлов, вибирает наименьший по размеру, ковертирует его — и так далее)
2. тут же Тор выдает, что резко — раза в два- увеличилось число процессов httpd
3. но сервер справляется с нагрузкой час-два.
4. начинается лавинообразное нарастание количества процессов httpd
5. серверу физически не хватает памяти. он начинает часто свопиться.
6. занавес. помогает только остановка и последующий запуск апача. не рестерт, а именно в такой последовательности: стоп — несколько секунд ожидания — старт. простая команда /usr/local/sbin/apachectl restrat не срабатывает почему-то в этом случае…
в логах апача error.log при этом на момент сбоя я наблюдаю
[Fri May 11 16:33:52 2007] [notice] SIGHUP received. Attempting to restart [Fri May 11 16:33:58 2007] [notice] Apache/1.3.37 (Unix) PHP/4.4.6 with Suhosin-Patch configured -- resuming normal operations [Fri May 11 16:33:58 2007] [notice] Accept mutex: flock (Default: flock) Seek failed MPEG: FATAL: EOF while searching for sequence header. Video: Cannot read properties. ADecoder init failed Unknown/missing audio format -> no sound ADecoder init failed ADecoder init failed Cannot find codec for audio format 0x50. [Fri May 11 18:18:53 2007] [notice] child pid 90059 exit signal Segmentation fault (11) [Fri May 11 18:29:56 2007] [notice] child pid 90088 exit signal Segmentation fault (11) [Fri May 11 18:30:42 2007] [notice] child pid 90075 exit signal Segmentation fault (11) [Fri May 11 18:33:06 2007] [notice] child pid 90174 exit signal Segmentation fault (11) [Fri May 11 18:34:05 2007] [notice] child pid 90170 exit signal Bus error (10) [Fri May 11 18:39:56 2007] [notice] child pid 90067 exit signal Segmentation fault (11) [Fri May 11 18:44:09 2007] [warn] child process 90082 did not exit, sending another SIGHUP [Fri May 11 18:44:10 2007] [warn] child process 90052 did not exit, sending another SIGHUP [Fri May 11 18:44:10 2007] [warn] child process 90054 did not exit, sending another SIGHUP [Fri May 11 18:44:10 2007] [warn] child process 90265 did not exit, sending another SIGHUP [Fri May 11 18:44:10 2007] [warn] child process 90074 did not exit, sending another SIGHUP [Fri May 11 18:44:10 2007] [warn] child process 90266 did not exit, sending another SIGHUP
я так понимаю, что проблема в конвертере. но никак не могу понять, как это связано с апачем???
вот описание работы конвертирования
Конвертер — самописный скрипт на PHP.
Функции: Конвертирование существующих на сервере файлов из нескольких распространеных форматов в один (flv)
Использует:
Битрикс (подключение к БД)
Mencoder (само конвертирование)
Flvtool2 (Добавление метаданных в FLV файл)
mplayer (создание тумбов)
ffmpeg
Видео загружает скрипт video_upload/upload.php (Простая загрузка файла на сервер).
Висящий в фоне converter.php:
1. Подключает заголовок Битрикса
2. Снимает ограничения по времени выполнения
3. Проверяет себя на единственность
4. Запускает цикл с условием canrun (по умолчанию true, т.е. цикл в рабочих условиях бесконечен)
ЦИКЛ:
1. Проверка на допустимость выполнения (небыло ли команды на выключение, если была, то скрипт умирает).
2. Выборка очереди, выборка из неё файла наименьшего размера
3. Создание тумбов из оригинала
4. Конвертирование Mencoder’ом
5. Добавление метаданных
6. Удаление лишних файлов
7. Активация основной записи видео в БД
Если п.2 ничего не нашёл, то скрипт засыпает на 5 секунд и повторяет цикл
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
пнуть больно-больно разработчика дабы подумал переделать кодирующий движок.
апач — аплоадит и отдаёт файлы в очередь.
скрипт их подбирает и обрабатывает. по одному.
апач получает обработанные файлы на раздачу
дабы не было бесконтрольного разрастания процессв апача при закачке/скачивании — подумай как ввести на это лимит.
подскажите, есть ли какая-нибудь софтина для анализа логов? надоело конвертировать в access…
я тут еще поглядела логи как раз во время зависания. получается, что на один IP была выдача видео в количестве 10-15 штук одновременно. это можно как-то запретить?
m$ access?
Как тебе не ай-яй-яй?
Например www/webalizer
Задача сформулирована неполно.
Насколько я понял: ресурс с ограничением доступа.
Следовательно всё IP-адреса известны.
Дело за малым: составить базу IP-адресов которым разрешён доступ, поднять ipfw и прописать ограничение коннектов на один IP в диапазоне 2-4.
спасибо :) ай-яй-яй, конечно, но у меня и так сейчас голова квадратная :(
нет. поскольку сервер публичный, то и основная нагрузка идет от гостей.
а тут еще, судя по логам, кто-то флудить стал..
еще, простие «ай-яй-яй-ский» вопрос: как грамотно организовать хоранение паролей к Фре?
я вот хочу создать учетную запись, обладатель которой смог бы просматривать логи/конфиги, но не мог бы изменять/удалять их..
как это возможно, нельзя ли «на пальцах» объяснить?:)
Дык webalizer — он же проще (вероятно ещё и нагляднее и информативнее m$ access’а, в котором я что-то не находил поддержки clf.
Здесь навскидку решения не предложу.
Пинать разработчика и менять логику — однозначно.
В такой формулировке пароли ну совершенно ни причём.
Здесь можно использовать стандатное разделение доступа и задействовать например стандартную группу audit.
Т.е. в /etc/newsyslog.conf для логов которые разрешено смотреть прописать группу audit с правами на файлы 640.
А в /etc/group прописать соответствующих системных пользователей в эту группу.
Насколько я помню Фрю, большинство конфигов пользователи могут читать и так.
Всё.
простите, а нельзя ли «разжевать» синатксис: как именно должна выглядеть запись в этом файле, скажем, для нового пользователя по имени peter, и чтоб он мог манипулировать (читать, копировать, изменять) конфиги апача и смотреть логи его же?
Мало тебя в детстве пороли.
Надо бы исправить…
Объяснить — не вопрос.
Но.
1. Ответ зависит от того, как у тебя пишутся логи Индейца. Я предполагал syslog, но это не означает, что syslog — наиболее вероятный вариант.
У меня на рабочем web-сервере (есть ещё несколько вспомогательных, их здесь не рассматриваем) логи пишутся самим Индейцем, а ротируются самописными скриптами по cron’у.
2. Тебе же сказали, что:
2.1. На форуме отсутствует фича разделения тем.
2.2. Не стесняйся начинать новые темы.
И не забывай обращать внимание на полноту и корректность формулировок.
3. Ещё было бы неплохо указать структуру конфигов к которым предполагается дать доступ. И тип доступа (не уверен, что shell — лучший вариант, зачем лишние соблазны; но как без шелла дать возможность чтения логов — навскидку вариантов нет).
ЗЫ: Читать == копировать.