Как Apache управляет TCP-соединениями между пользователем и Jonas?

У меня есть приложение Java, развернутое на Jonas за сервером Apache. Java-приложение используется для загрузки файлов. Чтобы скачать файл, пользователь отправляет get. Таким образом, существует два TCP-соединения: одно от пользователя к Apache, другое от Apache к Jonas.

Моя проблема в том, что Jonas отправляет файл быстрее, чем Apache отправляет пользователю. Когда Jonas отправил весь файл, он закрывает свою половину соединения через FIN,ACK. Apache отвечает с помощью RST и закрывает соединение с пользователем через FIN,ACK, даже если пользователь не получил все данные.

Ниже сетевой захват проблемы

Подключения пользователя:54234 ---- 8089 Apache 55903 ---- 9019 Jonas

Time            Source                Src. Port Destination           Dest. Port Protocol Length Info                                                              
14:16:43.898743 10.99.111.149         9019      10.99.111.149         55903      TCP      16452  9019 > 55903 [ACK] Seq=101869713 Ack=332 Win=34304 Len=16396[Packet size limited during capture] 0.000015    0.000015000
14:16:43.898978 10.99.111.149         55903     10.99.111.149         9019       TCP      56     55903 > 9019 [ACK] Seq=332 Ack=101886109 Win=24064 Len=0            
14:16:43.898992 10.99.111.149         9019      10.99.111.149         55903      TCP      12891  9019 > 55903 [FIN, PSH, ACK] Seq=101886109 Ack=332 Win=34304 Len=12835 
14:16:43.899004 10.99.111.149         55903     10.99.111.149         9019       TCP      56     55903 > 9019 [ACK] Seq=332 Ack=101898945 Win=11264 Len=0            
14:16:43.899188 10.99.111.149         55903     10.99.111.149         9019       TCP      56     55903 > 9019 [RST, ACK] Seq=332 Ack=101898945 Win=639488 Len=0      
14:16:43.899399 10.99.111.149         8089      10.99.111.157         54234      TCP      56     8089 > 54234 [FIN, ACK] Seq=4159541 Ack=258 Win=15872 Len=0     
14:16:43.900091 10.99.111.157         54234     10.99.111.149         8089       TCP      62     54234 > 8089 [ACK] Seq=258 Ack=4159542 Win=65535 Len=0          
14:16:44.013833 10.99.111.157         54234     10.99.111.149         8089       TCP      62     54234 > 8089 [FIN, ACK] Seq=258 Ack=4159542 Win=65535 Len=0     
14:16:44.013880 10.99.111.149         8089      10.99.111.157         54234      TCP      56     8089 > 54234 [ACK] Seq=4159542 Ack=259 Win=15872 Len=0       

Мои вопросы:

  • это нормальное поведение от Apache? Может ли Apache буферизовать все данные перед отправкой пользователю?
  • Это настраивается через mod_jk или в конфигурации Apache?
  • RST отправляется при возникновении проблем с TCP-соединениями. Есть ли файл журнала, посвященный этим проблемам?

0 ответов

Другие вопросы по тегам