Здравствуйте.
Продолжаю разбираться с Вашим биллингом и наткнулся на проблему с snmp.
Настроил bgbilling так, что он отключает порт на шлюзе (тип Switch) если кончились деньги у клиента. Посмотрел, все работало (порт включается/выключается в зависимости от баланса клиента).
Но спустя порядка 8 часов (проверка шлюза раз в 1 минуту) заметил в логе (server/log/scheduler.log) следующее:
Код:
ERROR 17.01.2008 10:52:00 Gate unaccesible - 192.168.231.12
ERROR 17.01.2008 10:52:00 -------------------------
ERROR 17.01.2008 10:52:00 error: Socket problem Too many open files
java.io.IOException: Socket problem Too many open files
at uk.co.westhawk.snmp.net.StandardSocket.create(StandardSocket.java:80)
at uk.co.westhawk.snmp.stack.AbstractSnmpContext.<init>(AbstractSnmpContext.java:143)
at uk.co.westhawk.snmp.stack.AbstractSnmpContext.<init>(AbstractSnmpContext.java:108)
at uk.co.westhawk.snmp.stack.SnmpContext.<init>(SnmpContext.java:85)
at bitel.billing.server.ipn.SwitchGateWorker.doSync(SwitchGateWorker.java:54)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:61)
Cоответственно биллинг перестал блокировать должников (и открывать тех у кого баланс > 0) на шлюзе.
Посмотрел на количество файлов (и сокетов) которые открыты scheulder'ом:
Код:
[10:57 ~]$ ps ax | grep Task
6700 ? Sl 3:31 /usr/lib/java/bin/java -Xmx256m -cp .:./lib/*: bitel.billing.server.TaskExecuter -estart
[10:35 ~]$ ls -l /proc/6700/fd/ | wc -l
1024
[10:53 ~]$ ls -l /proc/6700/fd/ | grep socket | wc -l
978
Т.е. получается, что кто-то (судя по логам функция bitel.billing.server.ipn.SwitchGateWorker.doSync) не закрывают за собой socket (или даже два, так как 8ч*60=480, а колличество открытых сокетов 978, что двое больше) после работы с шлюзом по snmp.
Заранее благодарен за помощь в решении проблемы.