nixp.ru v3.0

23 октября 2017,
понедельник,
10:46:28 MSK

DevOps с компанией «Флант»
SvetlanaNikit написала 12 мая 2007 года в 13:04 (579 просмотров) Ведет себя как женщина; открыла 4 темы в форуме, оставила 52 комментария на сайте.

напомню, есть веб-сервер на 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 секунд и повторяет цикл

Genie

пнуть больно-больно разработчика дабы подумал переделать кодирующий движок.

апач — аплоадит и отдаёт файлы в очередь.

скрипт их подбирает и обрабатывает. по одному.

апач получает обработанные файлы на раздачу

дабы не было бесконтрольного разрастания процессв апача при закачке/скачивании — подумай как ввести на это лимит.

SvetlanaNikit

подскажите, есть ли какая-нибудь софтина для анализа логов? надоело конвертировать в access…

я тут еще поглядела логи как раз во время зависания. получается, что на один IP была выдача видео в количестве 10-15 штук одновременно. это можно как-то запретить?

Anarchist
SvetlanaNikit
подскажите, есть ли какая-нибудь софтина для анализа логов? надоело конвертировать в access…

m$ access?

Как тебе не ай-яй-яй?

Например www/webalizer

SvetlanaNikit
я тут еще поглядела логи как раз во время зависания. получается, что на один IP была выдача видео в количестве 10-15 штук одновременно. это можно как-то запретить?

Задача сформулирована неполно.

Насколько я понял: ресурс с ограничением доступа.

Следовательно всё IP-адреса известны.

Дело за малым: составить базу IP-адресов которым разрешён доступ, поднять ipfw и прописать ограничение коннектов на один IP в диапазоне 2-4.

SvetlanaNikit
Anarchist
m$ access?

Как тебе не ай-яй-яй?

Например www/webalizer

спасибо :) ай-яй-яй, конечно, но у меня и так сейчас голова квадратная :(

Задача сформулирована неполно.

Насколько я понял: ресурс с ограничением доступа.

Следовательно всё IP-адреса известны.

Дело за малым: составить базу IP-адресов которым разрешён доступ, поднять ipfw и прописать ограничение коннектов на один IP в диапазоне 2-4.

нет. поскольку сервер публичный, то и основная нагрузка идет от гостей.

а тут еще, судя по логам, кто-то флудить стал..

еще, простие «ай-яй-яй-ский» вопрос: как грамотно организовать хоранение паролей к Фре?

я вот хочу создать учетную запись, обладатель которой смог бы просматривать логи/конфиги, но не мог бы изменять/удалять их..

как это возможно, нельзя ли «на пальцах» объяснить?:)

Anarchist
SvetlanaNikit
спасибо :) ай-яй-яй, конечно, но у меня и так сейчас голова квадратная :(

Дык webalizer — он же проще (вероятно ещё и нагляднее и информативнее m$ access’а, в котором я что-то не находил поддержки clf.

SvetlanaNikit
нет. поскольку сервер публичный, то и основная нагрузка идет от гостей.

а тут еще, судя по логам, кто-то флудить стал..

Здесь навскидку решения не предложу.

Пинать разработчика и менять логику — однозначно.

SvetlanaNikit
еще, простие «ай-яй-яй-ский» вопрос: как грамотно организовать хоранение паролей к Фре?

я вот хочу создать учетную запись, обладатель которой смог бы просматривать логи/конфиги, но не мог бы изменять/удалять их..

как это возможно, нельзя ли «на пальцах» объяснить?:)

В такой формулировке пароли ну совершенно ни причём.

Здесь можно использовать стандатное разделение доступа и задействовать например стандартную группу audit.

Т.е. в /etc/newsyslog.conf для логов которые разрешено смотреть прописать группу audit с правами на файлы 640.

А в /etc/group прописать соответствующих системных пользователей в эту группу.

Насколько я помню Фрю, большинство конфигов пользователи могут читать и так.

Всё.

SvetlanaNikit
Т.е. в /etc/newsyslog.conf для логов которые разрешено смотреть прописать группу audit с правами на файлы 640.

простите, а нельзя ли «разжевать» синатксис: как именно должна выглядеть запись в этом файле, скажем, для нового пользователя по имени peter, и чтоб он мог манипулировать (читать, копировать, изменять) конфиги апача и смотреть логи его же?

Anarchist
SvetlanaNikit
простите, а нельзя ли «разжевать» синатксис: как именно должна выглядеть запись в этом файле, скажем, для нового пользователя по имени peter, и чтоб он мог манипулировать (читать, копировать, изменять) конфиги апача и смотреть логи его же?

Мало тебя в детстве пороли.

Надо бы исправить…

Объяснить — не вопрос.

Но.

1. Ответ зависит от того, как у тебя пишутся логи Индейца. Я предполагал syslog, но это не означает, что syslog — наиболее вероятный вариант.

У меня на рабочем web-сервере (есть ещё несколько вспомогательных, их здесь не рассматриваем) логи пишутся самим Индейцем, а ротируются самописными скриптами по cron’у.

2. Тебе же сказали, что:

2.1. На форуме отсутствует фича разделения тем.

2.2. Не стесняйся начинать новые темы.

И не забывай обращать внимание на полноту и корректность формулировок.

3. Ещё было бы неплохо указать структуру конфигов к которым предполагается дать доступ. И тип доступа (не уверен, что shell — лучший вариант, зачем лишние соблазны; но как без шелла дать возможность чтения логов — навскидку вариантов нет).

ЗЫ: Читать == копировать.