Как Вы фиксируете “Слишком много открытых файлов” проблема в Гудзоне?

В моем ящике Linux я использую следующий код. Это похоже на запись manual , упомянутая в другом месте, но этот код вращается в узком цикле, где этого кода нет, и есть много нечетных угловых случаев, когда код не учитывает этот код.

def read_single_keypress():
    """Waits for a single keypress on stdin.

    This is a silly function to call if you need to do it a lot because it has
    to store stdin's current setup, setup stdin for reading single keystrokes
    then read the single keystroke then revert stdin back after reading the
    keystroke.

    Returns the character of the key that was pressed (zero on
    KeyboardInterrupt which can happen when a signal gets handled)

    """
    import termios, fcntl, sys, os
    fd = sys.stdin.fileno()
    # save old state
    flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
    attrs_save = termios.tcgetattr(fd)
    # make raw - the way to do this comes from the termios(3) man page.
    attrs = list(attrs_save) # copy the stored version to update
    # iflag
    attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK 
                  | termios.ISTRIP | termios.INLCR | termios. IGNCR 
                  | termios.ICRNL | termios.IXON )
    # oflag
    attrs[1] &= ~termios.OPOST
    # cflag
    attrs[2] &= ~(termios.CSIZE | termios. PARENB)
    attrs[2] |= termios.CS8
    # lflag
    attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
                  | termios.ISIG | termios.IEXTEN)
    termios.tcsetattr(fd, termios.TCSANOW, attrs)
    # turn off non-blocking
    fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
    # read a single keystroke
    try:
        ret = sys.stdin.read(1) # returns a single character
    except KeyboardInterrupt: 
        ret = '\x03'
    finally:
        # restore old state
        termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
        fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
    return ret

6
задан Randyaa 22 September 2008 в 13:40
поделиться

4 ответа

Это номер 715 Хадсона ( http://issues.hudson-ci.org/browse/HUDSON-715 ). Текущая рекомендация - установить «максимальное количество одновременных потоков опроса», чтобы снизить активность опроса.

4
ответ дан 17 December 2019 в 00:17
поделиться

Система изменения ограничивает для максимальных открытых дескрипторов файлов для каждого процесса? Как в ulimit -n для процесса Java?

0
ответ дан 17 December 2019 в 00:17
поделиться

Я столкнулся с этой проблемой с другим приложением Java, работающим на Debian, она исчезла, когда мы перешли на версию Java 1.6.0.0. Java никогда не закрывала неиспользуемые соединения, в результате чего генерировалось исключение.

0
ответ дан 17 December 2019 в 00:17
поделиться

См. HTTPS://wiki.jenkins-ci.org/display/jenkins/i%27m или+getting+Too+manylepenepen+files+Error для чего Нам нужно от вас, чтобы исправить эту проблему.

3
ответ дан 17 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: