Вывести имя «N» раз с помощью рекурсивного CTE в SQL Server? [закрыто]

Похоже, что у вас заканчиваются эфемерные порты . Чтобы проверить, используйте команду netstat и найдите несколько тысяч портов в состоянии TIME_WAIT .

В Mac OS X используется эфемер по умолчанию диапазон портов составляет от 49152 до 65535, в общей сложности 16384 порта. Вы можете проверить это с помощью команды sysctl :

$ sysctl net.inet.ip.portrange.first net.inet.ip.portrange.last
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535

Как только вы закончите эфемерные порты, вам, как правило, нужно подождать, пока истечет срок действия TIME_WAIT ( 2 * максимальное время жизни сегмента), пока вы не сможете повторно использовать определенный номер порта. Вы можете удвоить количество портов, изменив диапазон, чтобы начать с 32768, что по умолчанию используется для Linux и Solaris. (Максимальный номер порта - 65535, поэтому вы не можете увеличить высокий уровень.)

$ sudo sysctl -w net.inet.ip.portrange.first=32768
net.inet.ip.portrange.first: 49152 -> 32768

Обратите внимание, что официальный диапазон , обозначенный IANA , составляет 49152 - 65535, а некоторые брандмауэры могут предположим, что динамически назначенные порты попадают в этот диапазон. Возможно, вам понадобится перенастроить ваш брандмауэр, чтобы использовать больший диапазон вне вашей локальной сети.

Также можно сократить максимальное время жизни сегмента (sysctl net.inet.tcp.msl в Mac OS X), что контролирует продолжительность состояния TIME_WAIT, но это опасно, так как это может привести к смешению старых соединений с более новыми, которые используют один и тот же номер порта. Существуют также некоторые трюки, связанные с привязкой к конкретным портам с опцией SO_REUSEADDR или закрытием с помощью опции SO_LINGER, но также могут быть смешаны старые и новые соединения, поэтому обычно считаются плохими идеями.

-8
задан Nagaraju 21 September 2017 в 11:02
поделиться