2015-11-30 4 views
2

Один из наших клиентов использует Netscaler в качестве промежуточного программного обеспечения для балансировки между сервером Fuse и нашим программным обеспечением Tomcat. В настоящее время мы испытываем странное поведение связи между нашим программным обеспечением и netscaler (мы делаем SOAP-запрос с использованием Spring-WS): через некоторое время, поскольку запрос на netscaler выполняется и ожидается ответ, netscaler отправляет ACK, RST пакет на наш сервер, и, следовательно, Java выбрасывает «сброс соединения» IOException. ТСР дамп следующим образом: fireshark screenshotNetscaler: внезапный ACK, пакет RST

Согласно NetScaler документации, Win поле пакета сброса содержит код ошибки, который 9300 в этой ситуации и «очистку неиспользуемых соединений» означает, что в это свою очередь, означает, что NetScaler работает процесс «зомби», который очищает простоя подключений и что этот процесс признал наше соединение недействительным.

Почему соединение должно быть обработано как idle от netscaler?

UPDATE Вот более полный журнал связи: enter image description here

ответ

0

Какое время дельта между сервером и пакет сброса? Вы можете настроить значения тайм-аута простоя на vserver netscaler для клиентов, которые простаивают, и на службе для серверов, на которые требуется много времени, чтобы ответить.

+0

были установки для убийства зависших соединений, и возник вопрос, в основном из-за отсутствия знаний (см мой ответ) –

0

Ok, это то, что я прочитал и было сказано:

  1. На уровне TCP нет никаких проблем для протокола для подключения к повеситься (то есть, ничего не посылается в течение длительного периода времени , и не было последовательности завершения соединения);
  2. Тем не менее проблема возникает на более высоких уровнях (системные ресурсы выделяются для каждого соединения), и для решения этой проблемы существует необоснованное обходное решение для подвесных соединений: для того, чтобы прекратить соединение изящно, обе стороны соединения может отправить пакеты keepalive (пробники) и принять меры после отправки нескольких пакетов и получения ответа от другой стороны.
  3. Netscaler реагирует на проблему подвесных соединений двумя способами: либо закрывает подвесные соединения после определенного (настраиваемого) количества времени, либо может использовать keepalive-probe apporach (и есть также настраиваемые параметры для этого)

Несмотря на то, что наши клиенты нашли более глубокие проблемы, которые были похоронены в реализациях сервисов (обработка длинных запросов), мы могли бы также применять подход keepalive-зондов, чтобы прекратить сбрасывать соединения.

Ссылки:

http://www.tcpipguide.com/free/t_TCPConnectionManagementandProblemHandlingtheConnec-3.htm

https://www.citrix.com/blogs/2012/07/26/netscaler-10-keep-alive-value-add-to-the-tcp-stack-with-profiles/