URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 76483
[ Назад ]

Исходное сообщение
"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"

Отправлено bohdan200 , 28-Сен-07 17:20 
Столкнулся со следующей проблемой:
FreeBSD 6.2
в /etc/rc.local стоит команда:
su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но не больше сутки. В случайный момент времени фря наглухо виснет, да так, что в локальной консоли не даже символы не набираются. Не знаю что с этим поделать...

Буду осень признателен за совет.


Содержание

Сообщения в этом обсуждении
"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"
Отправлено universite , 28-Сен-07 17:39 
>Столкнулся со следующей проблемой:
>FreeBSD 6.2
>в /etc/rc.local стоит команда:
>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>не больше сутки. В случайный момент времени фря наглухо виснет, да
>так, что в локальной консоли не даже символы не набираются. Не
>знаю что с этим поделать...
>
>Буду осень признателен за совет.

Выкинуть mlnet - очень тормознутая и криво написанная штука.


"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"
Отправлено newser , 28-Сен-07 18:16 
>[оверквотинг удален]
>>в /etc/rc.local стоит команда:
>>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>>не больше сутки. В случайный момент времени фря наглухо виснет, да
>>так, что в локальной консоли не даже символы не набираются. Не
>>знаю что с этим поделать...
>>
>>Буду осень признателен за совет.
>
>Выкинуть mlnet - очень тормознутая и криво написанная штука.

К тому же человек даже не знает, что установленный из портов mlnet кладёт старт-стоповый скрипт в /usr/local/etc/rc.d.


"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"
Отправлено bohdan200 , 28-Сен-07 19:02 
>[оверквотинг удален]
>>>не больше сутки. В случайный момент времени фря наглухо виснет, да
>>>так, что в локальной консоли не даже символы не набираются. Не
>>>знаю что с этим поделать...
>>>
>>>Буду осень признателен за совет.
>>
>>Выкинуть mlnet - очень тормознутая и криво написанная штука.
>
>К тому же человек даже не знает, что установленный из портов mlnet
>кладёт старт-стоповый скрипт в /usr/local/etc/rc.d.

Кроме mlnet не встречал более-менее удобной проги с хорошим гуи под винду... Может плохо искал, подскажите плс.

Как выяснилось проблема не в su.
Проблема с ipfw.
Зачем все это нужно. Чтобы засунуть трафик mlnet в общий с юзерами шейпер и дать ему минимальный приоритет. mlnet установлен не из портов и вне шейпера работает нормально неделями без перезагрузок и т.п. (дольше не пробовал)

О запуске из rc.d я прекрасно знаю, но
1) нет прозрачной возможности определения порядка загрузки
2) все что докручено не из портов я просто идеологически собрал в rc.local

Если нет правил с шейпенгом - все ОК.
Стоит net.inet.ip.fw.one_pass=0
Список правил фаера:

-f pipe flush
-f queue flush
-f flush

# ipfw rules
add deny all from 10.0.20.0/24 to any via tun0
add deny all from any to 10.0.20.0/24 via tun0

# nat
#add divert natd all from 10.0.20.0/24 to not 10.0.20.0/24 out xmit tun0
#add divert natd all from not 10.0.20.0/24 to any in recv tun0
add divert natd all from any to any via tun0

# pipes
pipe 1 config bw 256Kbit/s queue 5
pipe 2 config bw 256Kbit/s queue 5

# mlnet
queue 1 config pipe 1 weight 10 queue 100 gred 0.002000/3/50/0.1000
queue 2 config pipe 2 weight 10 queue 100 gred 0.002000/3/50/0.1000
add queue 1 all from any to any via tun0 uid mlnet in
add queue 2 all from any to any via tun0 uid mlnet out

queue 3 config pipe 1 weight 90 queue 100 gred 0.002000/3/50/0.1000
queue 4 config pipe 2 weight 90 queue 100 gred 0.002000/3/50/0.1000
add queue 3 all from any to any via ng0 in
add queue 4 all from any to any via ng0 out

.... и так далее для всех юзеров ....

Возможно трабл в том, что правила для ng0, ng1 и остальных прописаны статически а эти интекфейсы не всегда существуют... Но шейпер работает...


"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"
Отправлено bohdan200 , 29-Сен-07 02:28 
Ну спасибо и на єтом.
Проблема біла с debug.mpsafenet

"FreeBSD 6.2: 'su mlnet -c '.....' ' фря наглухо виснет"
Отправлено Infrasty , 17-Окт-07 22:58 
>Столкнулся со следующей проблемой:
>FreeBSD 6.2
>в /etc/rc.local стоит команда:
>su mlnet -c 'cd /mnt/mlDonkey; ./mlnet &'
>т.е. просто запуск mlnet из-под пользователя mlnet. Прога запускается, все работает, но
>не больше сутки. В случайный момент времени фря наглухо виснет, да
>так, что в локальной консоли не даже символы не набираются. Не
>знаю что с этим поделать...
>
>Буду осень признателен за совет.

Проблема не в mlnet'e и даже не совсем в ipfw.
Проблема в использовании в правилах firewall'a uid/gid пользователей. Из-за особенностей реализации кода, выполняющего проверку uid/gid возможна замыкание (deadlock) процессов в ядре что и приводит к глухому зависанию компьютера - при чем нет ни kernel panic ни иных сообщений.
Эта проблема присуща не только ipfw но и pf и ipf.

В большинстве случаев проблема решается установкой переменной debug.mpsafenet=0, которая по сути отключает многопоточность для сетевого стека.
Другим решением проблемы является патч для firewall'a, который принудительно включает проверку uid/gid для каждого пакета - для каждого firewall'a патч индивидуален.
Третий вариант это отказаться от правил, использующих uid/gid lookup - хотя иной раз они делают конфигурации firewall'ов очень элегантными.

больше можно узнать в google например по ipfw uid deadlock