замораживания программы 'ab' после большого количества запросов, почему?

Вместо вложения можно попробовать встроенный:

Response.AddHeader("content-disposition", "inline;filename=MyFile.pdf");

я использовал встроенный в предыдущем веб-приложении, которое генерировало вывод Crystal Reports в PDF и отправило это в браузере пользователю.

37
задан Paul Sweatte 25 April 2014 в 02:17
поделиться

1 ответ

Похоже, у вас заканчиваются временных портов . Для проверки используйте команду 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 , но они также могут привести к смешиванию старых и новых подключений, поэтому обычно считается плохой идеей.

Вам может потребоваться перенастроить брандмауэр, чтобы использовать больший диапазон за пределами вашей локальной сети.

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

Вам может потребоваться перенастроить брандмауэр, чтобы использовать больший диапазон за пределами вашей локальной сети.

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

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

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

51
ответ дан 27 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

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