Я тестирую стресс-тест сервера. ОС сервера и ОС клиента - CentOS6.4.
клиент пытается установить 3000 подключений, одно подключение отправляет один HTTP-запрос с помощью инструмента нагрузочного тестирования weighttp. но клиент получает ошибку. эта ошибка - сброс соединения одноранговым узлом. Я захватил пакеты с помощью wirehark.
0.523605 10.0.0.2 -> 10.0.0.1 TCP 74 45763 > ddi-tcp-1 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=178982970 TSecr=0 WS=128
0.533484 10.0.0.1 -> 10.0.0.2 TCP 74 ddi-tcp-1 > 45763 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=178914097 TSecr=178982970 WS=128
0.589445 10.0.0.2 -> 10.0.0.1 TCP 66 45763 > ddi-tcp-1 [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSval=178982993 TSecr=178914097
0.789282 10.0.0.2 -> 10.0.0.1 TCP 166 45763 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=178983235 TSecr=178914097
0.839889 10.0.0.1 -> 10.0.0.2 TCP 66 ddi-tcp-1 > 45763 [ACK] Seq=1 Ack=100 Win=14592 Len=0 TSval=178914363 TSecr=17898323
0.845196 10.0.0.1 -> 10.0.0.2 TCP 303 ddi-tcp-1 > 45763 [PSH, ACK] Seq=1 Ack=100 Win=14592 Len=237 TSval=178914374 TSecr=178983235
0.845203 10.0.0.1 -> 10.0.0.2 TCP 678 ddi-tcp-1 > 45763 [PSH, ACK] Seq=238 Ack=100 Win=14592 Len=612 TSval=178914374 TSecr=178983235
1.071341 10.0.0.1 -> 10.0.0.2 TCP 915 [TCP Retransmission] ddi-tcp-1 > 45763 [PSH, ACK] Seq=1 Ack=100 Win=14592 Len=849 TSval=178914640 TSecr=178983235
1.076500 10.0.0.2 -> 10.0.0.1 TCP 66 45763 > ddi-tcp-1 [ACK] Seq=100 Ack=850 Win=16384 Len=0 TSval=178983531 TSecr=178914640
1.076575 10.0.0.2 -> 10.0.0.1 TCP 66 45763 > ddi-tcp-1 [FIN, ACK] Seq=100 Ack=850 Win=16384 Len=0 TSval=178983531 TSecr=178914640
1.076844 10.0.0.1 -> 10.0.0.2 TCP 66 ddi-tcp-1 > 45763 [FIN, ACK] Seq=850 Ack=101 Win=14592 Len=0 TSval=178914649 TSecr=178983531
1.337245 10.0.0.2 -> 10.0.0.1 TCP 66 45763 > ddi-tcp-1 [ACK] Seq=101 Ack=851 Win=16384 Len=0 TSval=178983535 TSecr=178914649
1.463888 10.0.0.1 -> 10.0.0.2 TCP 66 [TCP Retransmission] ddi-tcp-1 > 45763 [FIN, ACK] Seq=850 Ack=101 Win=14592 Len=0 TSval=178914911 TSecr=178983531
1.471462 10.0.0.2 -> 10.0.0.1 TCP 66 [TCP Dup ACK 9057#1] 45763 > ddi-tcp-1 [ACK] Seq=101 Ack=851 Win=16384 Len=0 TSval=178983923 TSecr=178914649
1.586270 10.0.0.1 -> 10.0.0.2 TCP 54 ddi-tcp-1 > 45763 [RST] Seq=851 Win=0 Len=0
Я не понимаю Почему сервер отправляет пакет RST клиенту после корректного закрытия?
Прошу прощения за мой плохой английский.
Спасибо за повтор.
Я захватываю пакеты на стороне сервера и клиента. сервер очень задерживается.
серверные пакеты
8.537458 10.0.0.2 -> 10.0.0.1 TCP 74 51446 > ddi-tcp-1 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=720269 TSecr=0 WS=128
8.537461 10.0.0.1 -> 10.0.0.2 TCP 74 ddi-tcp-1 > 51446 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=691010 TSecr=720269 WS=128
10.279094 10.0.0.2 -> 10.0.0.1 TCP 165 51446 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=722038 TSecr=691010
10.281834 10.0.0.1 -> 10.0.0.2 TCP 54 ddi-tcp-1 > 51446 [RST] Seq=1 Win=0 Len=0
клиентские пакеты
6.959709 10.0.0.2 -> 10.0.0.1 TCP 74 51446 > ddi-tcp-1 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=720269 TSecr=0 WS=128
6.964438 10.0.0.1 -> 10.0.0.2 TCP 74 ddi-tcp-1 > 51446 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=691010 TSecr=720269 WS=128
7.000836 10.0.0.2 -> 10.0.0.1 TCP 66 51446 > ddi-tcp-1 [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSval=720315 TSecr=691010
7.002803 10.0.0.2 -> 10.0.0.1 TCP 165 51446 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=720315 TSecr=691010
7.222562 10.0.0.2 -> 10.0.0.1 TCP 165 [TCP Retransmission] 51446 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=720562 TSecr=691010
7.514462 10.0.0.1 -> 10.0.0.2 TCP 66 ddi-tcp-1 > 49507 [FIN, ACK] Seq=850 Ack=101 Win=14592 Len=0 TSval=691534 TSecr=720767
7.703119 10.0.0.2 -> 10.0.0.1 TCP 165 [TCP Retransmission] 51446 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=721054 TSecr=691010
8.686885 10.0.0.2 -> 10.0.0.1 TCP 165 [TCP Retransmission] 51446 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=1 Win=14720 Len=99 TSval=722038 TSecr=691010
8.709193 10.0.0.1 -> 10.0.0.2 TCP 60 ddi-tcp-1 > 51446 [RST] Seq=1 Win=0 Len=0
Я проверил журнал ОС (/ var / log / messaeges), но не смог найти, что сервер достиг пределов.
Я пытаюсь решить проблему. Спасибо!
На стороне сервера закрытие выглядит не очень изящно из-за повторной передачи FIN, ACK @ 1.463888, как если бы он не видел ACK @ 1.337245
Я предполагаю, что первоначальное закрытие ACK @ 1.337245 в конечном итоге обрабатывается после 1.463888, а RST - для последующего ACK @ 1.471462
Попробуйте выполнить захват на 10.0.0.1 одновременно, чтобы сравнить обе стороны соединения и посмотреть, когда / появляются ли пакеты на сервере.
Также кажется, что существует значительная задержка клиентского первоначального закрытия ACK @ 1.337245, что также может быть фактором. Клиенты с предыдущим ACK @ 1.076500 также проходят повторную передачу. Может быть, вы приближаетесь к пределу клиентской системы? Попробуйте разделить клиентские запросы на два или более блоков, чтобы удалить это как возможный ограничивающий фактор.
Я изменил файлы cookie синхронизации с 1 на 0.
Эта проблема решена!
Большое спасибо!