вывод top во время рассылки:
При обращении к другому скрипту/движку - та же проблема. Единственное НО - после смены метода рассылки, в настройках форума vbulletin на smtp, письма идут в несколько потоков + форум и остальные движки висящие на моем сервере ради тестирования все же со скрипом открываются (иногда правда все же проскакивает ошибка "The page *****").
Рассылка запускается автоматом, затем пытаюсь обратиться к форуму - форум не отвечает. Сегодня точно проверю работоспособность другого веб-движка, который так же расположен на этом сервере, в этот же момент запишу показания top-а (iowait в норме).
Нынче "выпендрежно" использовать веб-сервер не apache? Никого не принуждаю поступать так, как поступил сам.
Проблеме, описанной мною выше, уже несколько месяцев (все никак не доходили руки разобраться). Раньше кол-во php-cgi процессов было 4 шт., форум вел себя так же в процессе этой злополучной рассылки. Спустя некоторое время число пользователей увеличилось и я решил увеличить число процессов до 6 шт. - в момент рассылки ведет себя абсолютно так же, как и с 4-мя.
Дело в том, что при выполнении скрипта, php-cgi процессы начинают жить "своей жизнью". 4-5 процессов висят как будто бы на них и вовсе не приходит запросы, остальные php-cgi процессы то и дело мелькают в top-е вместе с демоном sendmail. Хочу сказать что возникает ощущение полной блокировки всех процессов, в момент работы скрипта. Кстати говоря сами письма уходят не так уж и быстро, это я опять к тому что вычислительная задача на php-cgi и на sendmail очень маленькая.
На apache переходить не хочу, т.к. уже давно от него ушел и возвращаться на него нет желания.
ps - php-cgi виснет в буквальном смысле, так то он работает и не требует каких-либо рестартов. Если рестарт сделать во время работы скрипта-рассылки, форум мгновенно становится доступным и открывается, но через несколько секунд опять происходит затык.
"своя машина" это чтобы никто не думал что проблема из-за других клиентов/пользователей, модель - PC с 3mhz двуядерной головой. Памяти 2 gb, i386. На счет php-cgi - не совсем понял Вас. В моей проблеме речь не идет о нагрузке (в момент проявления проблемы она нулевая), речь идет о прекращении нормальной работы (многопоточной) php-cgi, в момент запуска скрипта, который рассылает пользователям уведомления о новых темах и делает прочие рассылки писем через sendmail.
На счет SMTP - спасибо, изменил настройки форума, посмотрю что будет твориться сегодня.
На счет таблиц - таблиц бд mysql? даже не знаю что сказать на это, в смысле не знаю как проверить. Почтовый демон sendmail с настройками по умолчанию, ос freebsd 7*. Работоспособность проверял простым методом - открываю браузер и пытаюсь открыть страницу своего форума, в ответ получаю
В это время, в nginx начинают сыпаться ошибки таймаутов от php-cgi:
Думаю попытаться каким-либо образом разделить письма на потоки, но это лишь теоретическая зацепка...
Nginx работает на ура, чего не скажешь про php-cgi. К сожалению сам не понимаю почему подобный скрипт-рассылки "ложит" все 6 php процессов, хотя по top-у видно что работают в лучшем случае 1-2 шт. php-cgi процессов, остальные просто простаивают.
ps - письма идут в однопоточном режиме, соблюдая некую очередность. это заметил при мониторинге, с помощью команды mailq
rewrite ^/page/(.*)$ /index.php?cstart=$1 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&yea r=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&mont h=$2&day=$3&news_page=$4&news_name=$5 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/print:page,([0-9]+),(.*).html(/?)+$ /engine/print.php?subaction=showfull &year=$1&month=$2&day=$3&news_page=$4&news_name=$5 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&ne ws_name=$4 last; rewrite ^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$4&news_page=$2&cstart=$3 last; rewrite ^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$3&news_page=$2 last; rewrite ^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /engine/print.php?news_page=$2&newsid=$3 last; rewrite ^/([^.]+)/([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$2 last; rewrite ^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$3&news_page=$1&cstart=$2 last; rewrite ^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$2&news_page=$1 last; rewrite ^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /engine/print.php?news_page=$1&newsid=$2 last; rewrite ^/([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$1 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3&cstart=$4 last; rewrite ^/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2 last; rewrite ^/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&cstart=$3 last; rewrite ^/([0-9]+)(/?)+$ /index.php?year=$1 last; rewrite ^/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&cstart=$2 last; rewrite ^/tags/([^/]*)(/?)+$ /index.php?do=tags&tag=$1 last; rewrite ^/tags/([^/]*)/page/([0-9]+)(/?)+$ /index.php?do=tags&tag=$1&cstart=$2 last; rewrite ^/user/([^/]*)/rss.xml$ /engine/rss.php?subaction=allnews&user=$1 last; rewrite ^/user/([^/]*)(/?)+$ /index.php?subaction=userinfo&user=$1 last; rewrite ^/user/([^/]*)/page/([0-9]+)(/?)+$ /index.php?subaction=userinfo&user=$1&cstart=$2 last; rewrite ^/user/([^/]*)/news(/?)+$ /index.php?subaction=allnews&user=$1 last; rewrite ^/user/([^/]*)/news/page/([0-9]+)(/?)+$ /index.php?subaction=allnews&user=$1&cstart=$2 last; rewrite ^/user/([^/]*)/news/rss.xml(/?)+$ /engine/rss.php?subaction=allnews&user=$1 last; rewrite ^/lastnews/(/?)+$ /index.php?do=lastnews last; rewrite ^/lastnews/page/([0-9]+)(/?)+$ /index.php?do=lastnews&cstart=$1 last; rewrite ^/catalog/([^/]*)(/?)+$ /index.php?catalog=$1 last; rewrite ^/catalog/([^/]*)/page/([0-9]+)(/?)+$ /index.php?catalog=$1&cstart=$2 last; rewrite ^/newposts(/?)+$ /index.php?subaction=newposts last; rewrite ^/newposts/page/([0-9]+)(/?)+$ /index.php?subaction=newposts&cstart=$1 last; rewrite ^/static/(.*).html(/?)+$ /index.php?do=static&page=$1 last; rewrite ^/favorites(/?)+$ /index.php?do=favorites last; rewrite ^/favorites/page/([0-9]+)(/?)+$ /index.php?do=favorites&cstart=$1 last; rewrite ^/rules.html$ /index.php?do=rules last; rewrite ^/statistics.html$ /index.php?do=stats last; rewrite ^/addnews.html$ /index.php?do=addnews last; rewrite ^/rss.xml$ /engine/rss.php last; rewrite ^/sitemap.xml$ /uploads/sitemap.xml last; rewrite ^/category/([^.]+)/(.*).html(/?)+$ /index.php?subaction=showfull&news_name=$2 last; rewrite ^/category/([^.]+)/page/([0-9]+)(/?)+$ /index.php?do=cat&category=$1&cstart=$2 last; rewrite ^/category/([^.]+)(/?)+$ /index.php?do=cat&category=$1 last; if (!-d $request_filename) { rewrite ^/([^.]+)/page/([0-9]+)(/?)+$ /index.php?do=cat&category=$1&cstart=$2 last; rewrite ^/([^.]+)/?$ /index.php?do=cat&category=$1 last; } if (!-f $request_filename) { rewrite ^/([^<]+)/rss.xml$ /engine/rss.php?do=cat&category=$1 last; rewrite ^/page,([0-9]+),([^/]+).html$ /index.php?do=static&page=$2&news_page=$1 last; rewrite ^/print:([^/]+).html$ /engine/print.php?do=static&page=$1 last; } if (!-f $request_filename) { rewrite ^/([^/]+).html$ /index.php?do=static&page=$1 last; }
Согласен, но как ни пробовал - результатов это действие не дает. Пароль криптуется в md5
Вставлял уже переделанный хеш (даже от другого пользователя, пароль которого я знаю), все равно не пускает...