Как обрабатывать сбои snmp ловушек - PullRequest
1 голос
/ 10 июня 2011

Я постоянно наблюдаю за процессом с помощью команды pgrep и отправляю прерывания на другую машину с помощью snmp4j.

Это мой код для мониторинга процесса:

String[] process = new String[] {"/bin/sh", "-c","pgrep httpd" };
Process proc = new ProcessBuilder(process).start();
InputStreamReader input = new InputStreamReader(proc.getInputStream());
BufferedReader reader = new BufferedReader(input);
String line = reader.readLine();
int rc = proc.waitFor();
reader.close();
input.close();

Я ограничиваю количество ловушек, отправляемых на машину с помощью iptables, но всякий раз, когда количество ловушек превышает настроенное, я получаю следующую ошибку:

org.snmp4j.MessageException: Operation not permitted
        at org.snmp4j.MessageDispatcherImpl.sendPdu(Unknown Source)
        at org.snmp4j.Snmp.sendMessage(Unknown Source)
        at org.snmp4j.Snmp.send(Unknown Source)
        at org.snmp4j.Snmp.send(Unknown Source)

Когда я получаю эту ошибку, / proc / (pid) / fd count также увеличивается в машине, затем достигает максимального значения fd, и я получаю эти сообщения об ошибках:

  • "СООБЩЕНИЕ: Слишком много открытых файлов java.net.SocketException: слишком много открыть файлы "
  • Невозможно запустить программу "/ bin / sh": java.io.IOException: ошибка = 24, тоже много открытых файлов.

Как я могу решить эту проблему?

...