Vbulletin 3.8: задача Ежедневный обзор

12
G
На сайте с 30.11.2009
Offline
11
1460

Приветствую. Пишу в связи с проблемой, а именно - у любой версии vbulletin линейки 3.8, в панели администрирования, в запланированных задачах есть задача под названием

Ежедневный обзор
Этот скрипт производит ежедневную рассылку обзора новых тем и сообщений.

На моем форуме это задача так же присутствует и выполняется. Ее суть заключается в рассылке чего-то там пользователям (точно еще не выяснил что именно) через встроенный почтовик сервера, в моем случае это sendmail. Проблема заключается в том, что когда наступает время и этот скрипт (./includes/cron/digestdaily.php) начинает рассылку, мой веб-сервер (использую nginx + spawn_cgi) перестает отвечать на запросы. Не подумайте, дело не в нагрузке, дело в другом:

1. Наступает время (специально перенес выполнение digestdaily.php на более позднее)

2. Стартует скрипт digestdaily.php, начинается успешная рассылка писем через sendmail. Почему успешная? Потому что следил за поведением почтовика - письмо формируется, письмо отправляется

3. Нагрузка машины близка к 0, процессы php-cgi есть (аж 6 штук) и каждый из них как я понимаю занимается формированием этих самых писем, общее кол-во которых около 150-200.

4. Форум перестает открываться. Nginx принимает запрос, отправляет его php-cgi и через некоторое время отваливается по таймауту.

5. Через 15-20 минут рассылка заканчивается и форум моментально начинает открываться.

Такое происходит каждый день потому как задача digestdaily.php по умолчанию стояла на ежедневное выполнение.

Немного данных:

машина под хостинг своя, Vbulletin 3.8.4, FreeBSD (хотя в данном контексте не важно какая ОС, предпологаю что на linux была бы та же проблема)

Гуру, как быть и что делать ? (с)

R
На сайте с 14.02.2010
Offline
77
#1

перестает отвечать что именно? nginx (сервер) вообще или только fcgi, то есть 504?

gilas:
и каждый из них как я понимаю занимается формированием этих самых писем

сильно сомневаюсь, скрипт же не 6 раз запускается

G
На сайте с 30.11.2009
Offline
11
#2
r0mik:
перестает отвечать что именно? nginx (сервер) вообще или только fcgi, то есть 504?

сильно сомневаюсь, скрипт же не 6 раз запускается
4. Форум перестает открываться. Nginx принимает запрос, отправляет его php-cgi и через некоторое время отваливается по таймауту.

Nginx работает на ура, чего не скажешь про php-cgi. К сожалению сам не понимаю почему подобный скрипт-рассылки "ложит" все 6 php процессов, хотя по top-у видно что работают в лучшем случае 1-2 шт. php-cgi процессов, остальные просто простаивают.

ps - письма идут в однопоточном режиме, соблюдая некую очередность. это заметил при мониторинге, с помощью команды mailq

R
На сайте с 14.02.2010
Offline
77
#3

угу, не внимательно прочел первый раз

быть может таблицы лочатся? может скриптом этим, плюс мы не знаем что у вас там за почтовая система...

вы проверяли работоспособность каким образом? обращением к этому же форуму или он не работает глобально, то есть не отрабатывает вообще никакой скрипт (простейший echo "bla bla")?

я к сожалению не знаю воблу совсем, но где-то с этого начал бы копать...

G
На сайте с 30.11.2009
Offline
11
#4
r0mik:
угу, не внимательно прочел первый раз

быть может таблицы лочатся? может скриптом этим, плюс мы не знаем что у вас там за почтовая система...
вы проверяли работоспособность каким образом? обращением к этому же форуму или он не работает глобально, то есть не отрабатывает вообще никакой скрипт (простейший echo "bla bla")?
я к сожалению не знаю воблу совсем, но где-то с этого начал бы копать...

На счет таблиц - таблиц бд mysql? даже не знаю что сказать на это, в смысле не знаю как проверить. Почтовый демон sendmail с настройками по умолчанию, ос freebsd 7*. Работоспособность проверял простым методом - открываю браузер и пытаюсь открыть страницу своего форума, в ответ получаю

The page you are looking for is temporarily unavailable. Please try again later.

В это время, в nginx начинают сыпаться ошибки таймаутов от php-cgi:


2010/11/17 02:01:30 [error] 43200#0: *1476 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 95.74.7.112, server: адрес_форума, request: "GET /forum/showthread.php?t=1542&page=5 HTTP/1.0", upstream: "fastcgi://unix:/var/run/fastcgi_sock:", host: "адрес_форума", referrer: "http://адрес_форума/forum/showthread.php?t=1542&page=4"

Думаю попытаться каким-либо образом разделить письма на потоки, но это лишь теоретическая зацепка...

N
На сайте с 06.05.2007
Offline
419
#5
машина под хостинг своя

это еще что за модель? памяти там сколько ? почему всего 6 штук php-cgi его вешают?

попробуйте в vbulletin переключиться на SMTP. Может быть не будут создаваться процессы или поменьше будет расход ресурсов.

Количество электронных писем, отправляемых за один раз - ОДНО.

Как последнее средство - CommunigatePro и тоже отправка через SMTP.

Кнопка вызова админа ()
G
На сайте с 30.11.2009
Offline
11
#6
netwind:
это еще что за модель? памяти там сколько ? почему всего 6 штук php-cgi его вешают?

попробуйте в vbulletin переключиться на SMTP. Может быть не будут создаваться процессы или поменьше будет расход ресурсов.
Количество электронных писем, отправляемых за один раз - ОДНО.

Как последнее средство - CommunigatePro и тоже отправка через SMTP.

"своя машина" это чтобы никто не думал что проблема из-за других клиентов/пользователей, модель - PC с 3mhz двуядерной головой. Памяти 2 gb, i386. На счет php-cgi - не совсем понял Вас. В моей проблеме речь не идет о нагрузке (в момент проявления проблемы она нулевая), речь идет о прекращении нормальной работы (многопоточной) php-cgi, в момент запуска скрипта, который рассылает пользователям уведомления о новых темах и делает прочие рассылки писем через sendmail.

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

N
На сайте с 06.05.2007
Offline
419
#7

gilas, допустим php-cgi что-то делает и виснет. допустим все 6 штук. но почему ваш сервер не может запустить еще больше процессов php-cgi, чтобы обработать запросы остальных клиентов?

не пора ли уже перейти на apache, если с другими методами запуска php у вас не сложилось? ?

G
На сайте с 30.11.2009
Offline
11
#8
netwind:
gilas, допустим php-cgi что-то делает и виснет. допустим все 6 штук. но почему ваш сервер не может запустить еще больше процессов php-cgi, чтобы обработать запросы остальных клиентов?
не пора ли уже перейти на apache, если с другими методами запуска php у вас не сложилось? ?

Проблеме, описанной мною выше, уже несколько месяцев (все никак не доходили руки разобраться). Раньше кол-во php-cgi процессов было 4 шт., форум вел себя так же в процессе этой злополучной рассылки. Спустя некоторое время число пользователей увеличилось и я решил увеличить число процессов до 6 шт. - в момент рассылки ведет себя абсолютно так же, как и с 4-мя.

Дело в том, что при выполнении скрипта, php-cgi процессы начинают жить "своей жизнью". 4-5 процессов висят как будто бы на них и вовсе не приходит запросы, остальные php-cgi процессы то и дело мелькают в top-е вместе с демоном sendmail. Хочу сказать что возникает ощущение полной блокировки всех процессов, в момент работы скрипта. Кстати говоря сами письма уходят не так уж и быстро, это я опять к тому что вычислительная задача на php-cgi и на sendmail очень маленькая.

На apache переходить не хочу, т.к. уже давно от него ушел и возвращаться на него нет желания.

ps - php-cgi виснет в буквальном смысле, так то он работает и не требует каких-либо рестартов. Если рестарт сделать во время работы скрипта-рассылки, форум мгновенно становится доступным и открывается, но через несколько секунд опять происходит затык.

R
На сайте с 14.02.2010
Offline
77
#9

вы так и не сказали полностью ли вешается fcgi

судя по логам nginx не может дождаться ответа от fcgi, но это при обращении к форуму. а при обращении к какому-то другому скрипту что будет?

и покажите top, может у вас там i/o-wait под завязку и оно просто не успевает отработать... у меня была подобная ситуация, когда умники запускали массовую рассылку, правда там vds дохлый совсем и пользователей более 10К (следовательно и писем), но мало ли...

N
На сайте с 06.05.2007
Offline
419
#10
gilas:
На apache переходить не хочу, т.к. уже давно от него ушел и возвращаться на него нет желания.

настал момент прекратить выпендреж.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий