Страница 1 из 1
nginx+apache22
Добавлено: 2010-05-25 12:47:35
xaker1
Последние пару дней возникла проблема с данной связкой, а именно 502 ошибка.
В логах:
Код: Выделить всё
2010/05/25 13:45:28 [crit] 99376#0: *8156 connect() to ip:8080 failed (13: Permission denied) while connecting to upstream, client: cip, server: domain.ru, request: "GET /chat_refresh.php?om=0 HTTP/1.1", upstream: "http://ip:8080/chat_refresh.php?om=0", host: "domain.ru", referrer: "http://domain.ru/talk.php"
cip - client ip, ip - server ip.
Подскажите как бороться, google молчит.
Re: nginx+apache22
Добавлено: 2010-05-25 12:51:19
hizel
*8156 connect() to ip:8080 failed (13: Permission denied) while connecting to upstream
Re: nginx+apache22
Добавлено: 2010-05-25 16:28:22
xaker1
Это я заметил, вопрос почему? Данная ошибка возникает не постоянно, а иногда. На любом из сайтов, находящихся на сервере.
Re: nginx+apache22
Добавлено: 2010-05-25 17:05:42
xaker1
Помог ребут сервера.
Подскажите куда копать, чтобы предотвратить повтор ошибки.
Re: nginx+apache22
Добавлено: 2010-05-25 17:36:57
hizel
ковыряйте фаервол, например
Re: nginx+apache22
Добавлено: 2010-05-25 17:45:19
xaker1
Код: Выделить всё
/home/admin/data/> ipfw show
00100 780172 564725027 allow ip from any to any via lo0
00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 0 0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
01100 0 0 deny tcp from table(1) to me dst-port 22 setup
01200 0 0 deny tcp from table(2) to me dst-port 25 setup
01300 0 0 deny tcp from table(3) to me dst-port 80,8080 setup
01400 0 0 reject log logamount 1000 tcp from any to any tcpflags syn,fin,ack,psh,rst,urg
01500 0 0 reject log logamount 1000 tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg
01600 0 0 reject log logamount 1000 tcp from any to any not established tcpflags fin
01700 0 0 deny log logamount 1000 ip from any to any not verrevpath in
01800 745203 477776118 allow tcp from any to me dst-port 80,8080 limit src-addr 10
65535 324132 105679820 allow ip from any to any
С фаерволом не работал, подскажите, какие правила лучше отредактировать.
Re: nginx+apache22
Добавлено: 2010-05-25 18:20:59
hizel
1800
Re: nginx+apache22
Добавлено: 2010-09-06 18:16:35
xaker1
Проблема начинает появляться опять... 502, 504 nginx. При этом кол-во процессов apache > 100. Помогает shutdown -r now
Фактически умирает apache. Подскажите, плз, куда копать (какие данные снять с сервера), что бы найти и устранить проблему.
Судя по логам nginx - средняя кол-во запросов во время данной проблемы, такое же как и когда работает 15-20 процессов apache (на взгляд, tail -f).
Re: nginx+apache22
Добавлено: 2010-09-06 23:27:15
stmm
Отключите в апаче KeepAlive. На бекенде он не нужен, только проблемы создает.
Re: nginx+apache22
Добавлено: 2010-09-07 9:45:41
xaker1
Вчера отключил, посмотрим что из этого получится. Есть еще идеи?
Re: nginx+apache22
Добавлено: 2010-09-07 10:21:15
ProFTP
Re: nginx+apache22
Добавлено: 2010-09-07 13:47:55
stmm
У меня еще есть одна идея. Было у меня тож самое некоторое время назад. Перерыл под инета, нашел только 2 вещи: KeepAlive в апаче или бед секторы в файловой системе.
Открючил KeepAlive - помогло, но через некоторое время один веник с рейда вылетел. Заменил - все работает без замечаний.
На всяк случай сделайте чек фс. Если все обошлось одним KeepAlive тогда хорошо.
Re: nginx+apache22
Добавлено: 2010-09-07 15:30:41
xaker1
Сильно сомневаюсь, сервак ложится полностью.
Re: nginx+apache22
Добавлено: 2010-09-08 21:38:12
xaker1
keepalive off не помогло.... чек фс имеете ввиду fsck -y?
Re: nginx+apache22
Добавлено: 2010-09-08 23:25:52
stmm
fsck -y -f или как то тип того.
Но если у вас рейд, тогда может не помочь. Может есть методы диагностики отдельного винта в рейде. Ну или запастись новым винтом и ждать...
Можно еще сделать скрипт для крона, который перезагружает апач, если он не отвечает, но еще не настолько повис чтобы ребутить сервер.
У меня стоял такой скрипт, Запускался раз в минуту, и выручал до того момента когда посыпался винт. Если надо могу пример скрипта выложить.
Re: nginx+apache22
Добавлено: 2010-09-09 14:27:17
xaker1
raid, он самый. Программный.
Если можно скриптик - прошу в студию.
Re: nginx+apache22
Добавлено: 2010-09-09 20:17:42
stmm
У меня стоял (ну я его не уберал и стоит) скрипт такого вида:
Код: Выделить всё
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
export PATH
CHECK_URL="http://your.domain/check.php"
APACHE_RESTART="/usr/local/etc/rc.d/apache22 restart"
RESULT_STR="`/usr/bin/fetch -o - -q -T 10 ${CHECK_URL}`"
if [ "$RESULT_STR" = "OK" ]
then
echo OK
else
echo Apache restart...
$APACHE_RESTART
echo "`/bin/date \"+%y-%m-%d %H:%M:%S\"`: apache restart" >> /var/log/check_apache.log
fi
В CHECK_URL пропишите путь к check.php на своем сервере.
Файл check.php на одном из вашех доменов должен быть вида:
Обратите внимание что в этом файле других символов не должно быть, начинаться должен с "<?" а кончаться на "?>". Никаких пробелов и переводов строк.
ну и crontab -e
Код: Выделить всё
*/2 * * * * /path/to/check.apache.sh >/dev/null 2>/dev/null
Re: nginx+apache22
Добавлено: 2010-09-09 20:40:47
xaker1
Сенкс. Только php код правильней
Немного подправил скрипт под себя - добавил еще рестарт nginx (точнее stop; start) killall -9 php-cgi.
В общем теперь для рестарта используется конструкция: nginx stop; apache stop; sleep 5 ; killall -9 php-cgi ; apache start ; nginx start.
Надеюсь что костыль поможет.
Re: nginx+apache22
Добавлено: 2010-09-10 15:34:57
xaker1
504 ошибка опять возникла. Рестарт апача не помогает - все равно сайты не отвечают, а кол-во процессов приближается к 100+.
Помогает только перезагрузка сервера, что и настораживает.
Иногда перезапускаю apache и nginx - 40 процессов apache висит, 504 ошибку nginx выдает, перезагружаешь сервер - 50+ процессов apache и все работает.
Re: nginx+apache22
Добавлено: 2010-09-10 16:00:41
dmtr
raid, он самый. Программный.
gmirror? тогда помониторить его работу
если винт помирает там будет видно как он весь райд тормозит, например
Re: nginx+apache22
Добавлено: 2010-09-10 19:00:27
stmm
У меня помогал рестарт апача. Даже когда первые разы в ручную, он рестартился несколько минут!!! Но после рестарта все работало ок.