PDA

Bekijk de volledige versie : vnstat и проблема 4Gb



tienye
17-08-2008, 09:45
Друзья, подскажите, как можно решить эту проблему? Вариант решения, который я нашел на форуме требует использования Additional pppd options, в который добавляются ip-down-script и ip-up-script, но в моем случае это поле неактивно. Я подключаюсь к интернету с помощью CDMA, используя прошивку от koppel. Можно ли как-то еще заставить pppd выполнять мои ppp0-ip-down и ppp0-ip-up? Я пробовал добавить все необходимые действия в /tmp/ppp/ip-up и /tmp/ppp/ip-down, но из этого ничего не вышло. Изменения в них не сохраняются...

Marks
17-08-2008, 10:33
/tmp/local/.files
добавьте туда файлы, которые нужно сохранить.
flashfs save
flashfs commit
flashfs enable

tienye
17-08-2008, 10:41
/tmp/local/.files
добавьте туда файлы, которые нужно сохранить.
flashfs save
flashfs commit
flashfs enable

Спасибо, все получилось, работает.

tienye
18-08-2008, 21:56
А нужно ли использовать post-firewall и в post-mount в моем случае? Я заметил сегодня что у меня при использовании только лишь ip-up была ситуация, когда интернет был, но vnstat был в состоянии disabled. Я так понимаю, что ppp0 отваливался, при этом выполнился ip-down, но после переподключения ip-up не выполнился, так? Хотя когда я вручную переподключал соединение через веб интерфейс все отрабатывало как надо, vnstat сначала переходил в состоянии disabled потом enabled. Как заставить его работать нормально?

Marks
18-08-2008, 23:17
А нужно ли использовать post-firewall и в post-mount в моем случае? Я заметил сегодня что у меня при использовании только лишь ip-up была ситуация, когда интернет был, но vnstat был в состоянии disabled. Я так понимаю, что ppp0 отваливался, при этом выполнился ip-down, но после переподключения ip-up не выполнился, так? Хотя когда я вручную переподключал соединение через веб интерфейс все отрабатывало как надо, vnstat сначала переходил в состоянии disabled потом enabled. Как заставить его работать нормально? Странно, у меня всё работает нормально. Может, для того, чтобы понять что происходит добавить в ip-up скрипт что-то типа

logger "Vnstat ip-up"
чтобы посмотреть где затык?

tienye
21-08-2008, 01:12
Добавил эту строчку в скрипт. Пока вроде бы все ок, не замечал подобных ситуаций. Пробовал даже модем отключать и подключать, все отрабатывает как надо, будем надеяться что это был просто какой-то глюк. Появился вопрос по поводу записей на 1970 год. Эту проблему можно как-то побороть? Я сделал запуск из ip-up следующим образом
(while [ $(date +%s) -lt 1000000000 ]; do sleep 2; done; /opt/bin/vnstat -u -r --enable -i ppp0 ) &
но это не помогает, все равно иногда после ребута запись на 1970. Как это у вас решено?

Marks
21-08-2008, 19:16
post-firewall

(while [ $(date +%s) -lt 1000000000 ]; do sleep 2; done; /tmp/local/sbin/ppp0-ip-up ) &
ppp0-ip-up

#!/bin/sh
if [ ! -L /tmp/ppp/link.ppp0 ]; then
/opt/bin/vnstat -u -r --enable -i ppp0
logger "Vnstat ppp0 stats enabled"
fi
Ещё, в post-mount

if [ ! -L /tmp/ppp/link.ppp0 ]; then
(while [ $(date +%s) -lt 1000000000 ]; do sleep 2; done; /tmp/local/sbin/ppp0-ip-up ) &
logger "Vnstat ppp0 stats enabled"
fi
Кривенько конечно, но всё работает :)

buka2
06-05-2009, 22:00
уже столько тем про vnstat/настойки/проблемы, что и не знаю куда лучше написать... пусть будет тут, надеюсь авторы "Настроек от и до" растащат себе.
Решение следующее:
в /opt/etc/vnstat.conf найдите строчку

MaxBandwidth 100
это дефолтный bandwidth для всех интерфейсов в Мегабитах
а дальше закоментированный пример, как изменить значение для конкретного интерфейса (там - eth0). Раскоментируйте его исправив имя
на свой (где у вас там интернет). Например, у меня так:

MaxBWppp0 3

Кому интересна суть проблемы, можно читать дальше.
Так вот, буквально два слова про природу этой неприятности:
как известно vnstat запускается cron-ом каждые N (по умолчанию - 5) минут и заглядывает в /proc/net/dev. Там пишут сколько байт по каждому интерфейсу накапало. Пишут абсолютное значение - стартовали - 0 и увеличивается пока интерфейс работает. Дабы вичислить изменение за какой-то период времени, vnstat запоминает последнее посчитанное значение и при следующем запуске смотрит на разницу. И это работает пока все хорошо.
Как было замечено 4ГБ добавляются после реконнекта. Вот сценарий этой проблемы:
- все работает, vnstat считает байты (пусть последнее посчитанное им значение - 100КБ)
- в какой-то момент соединение обрывается и восстанавливается, счетчики в /prec/net/dev сбрасываются в 0
- допустим в момент когда снова скачано 20КБ запускается vnstat и пробует посчитать разницу. Разница = 20КБ - 100КБ = -80КБ, но поскольку делает он это в беззнаковых переменных, то -80 превращаются в что-то большое и положительное (близкое к 4ГБ)
А теперь самое интересное: vnstat пробует защитится от подобных неприятностей. Способ очень простой - посмотреть не превышает ли полученое число некоторое теоретически возможное для данного интерфейса. И тут на сцену выходит "роковое стечение обстоятельств" :) почему? смотрите сами:
Теоретически возможный объем vnstat считает так:
maxtransfer=maxbandwith/8*interval*1.1
подставит значения по умолчанию и посмотрим что получится:
maxbandwidth - 100Mbit, interval - 5min (300sec), умножение на 1.1, согласно коментария в коде, - для гарантии (to be on the safe side)
maxtransfer=100/8*300*1.1 = 4125МБ
а пик который вылазит при реконекте - меньше-равен 4096МБ - то есть легально пролазит при настройках по умолчанию.
Ах, если бы, ах, если бы автор не верил в сказку, что по 100Мбит действительно пролезет 100Мбит данных, или умножал (to be on the safe side) хотя бы на 1.09 или рекомендованый период запуска был меньше 5 минут - этот фальшивый пик не пролез бы в теоретически возможный предел и vnstat не сосчитал бы его.
Самый простой правильный, как по мне, способ решения описан в начале поста. А кому "не повезло" и у него действительно 100Мбитный интернет вряд ли заметят лишних 4ГБ :) но если хочется точности, можно написань не 100, а 90 - ущерба никакого, а vnstat-у полегчает

oleg71
07-05-2009, 14:32
Простое решение проблемы 4ГБ


Спасибо, я его из-за этого и не ставил :)

MrGalaxy
29-11-2009, 14:10
Господа,

1) зачем здесь (http://wl500g.info/showpost.php?p=128995&postcount=7) один и тот же скрипт засунут и в post-boot и в post-firewall?

2) почему у меня скачок наблюдался только по ppp0 (vpn на wan), а по vlan1 (этот самый wan с vpn и без оного) шёл плавно?

valshap
14-12-2009, 22:32
уже столько тем про vnstat/настойки/проблемы, что и не знаю куда лучше написать... пусть будет тут, надеюсь авторы "Настроек от и до" растащат себе.
Решение следующее:
в /opt/etc/vnstat.conf найдите строчку

MaxBandwidth 100
это дефолтный bandwidth для всех интерфейсов в Мегабитах
а дальше закоментированный пример, как изменить значение для конкретного интерфейса (там - eth0). Раскоментируйте его исправив имя
на свой (где у вас там интернет). Например, у меня так:

MaxBWppp0 3


1) Если у меня интернет 512K сидит на vlan1, то я должен прописать эту строку так?

MaxBWvlan1 1
2) У меня проблема в vnstat с падением статистики трафика. Роутер не перегружал. В приведённых скриншотах суть проблемы:
в 00ч.53мин. ежечасная статистика в среднем - 128Мб/час
http://shapoval.homelinux.com/images/2009_12_13_graph.png

а на утро в 10ч.41мин вся статистика по входящему трафику исчезла :(
http://shapoval.homelinux.com/images/2009_12_13_graph_BAD.png

3) Где искать ошибку в vnstat?