Internet-Explorer

Windows 上不同瀏覽器之間的保持活動和超時行為

  • September 19, 2012

簡潔版本

為什麼chrome會發出keep-alive,而IE和FF沒有?

長版

最初,我認為這是一個伺服器端問題。

我有一個 apache 伺服器,它是一個 tomcat webapp 的前端代理。此應用程序的其中一個頁面需要 15-20 分鐘才能返回結果。我觀察到通過 IE 或 FF 訪問此頁面時使用該頁面會超時。它進入標準的“無法訪問”頁面,就像您在嘗試訪問網路時查看網路電纜是否斷開一樣。然而,在 Chrome 上,它工作得很好。

這讓我很好奇,所以我在伺服器上用 tcpdump 監視了流量,我注意到了一個很大的不同。雖然 IE 和 FF 在超時之前一直保持沉默,但 chrome 會定期向伺服器發送 ACK 數據包(並且正在獲取響應 ACK)。另外值得注意的是,IE/FF 似乎都發送了 TCP 斷開連接,而不是從伺服器接收任何超時。

所以,是的,為什麼 IE/FF 會在 Chrome 不斷開時斷開連接?為什麼 Chrome 會發送 keep-alives 而 IE/FF 不會?

我已嘗試更改 MS在此知識庫文章中推薦的系統資料庫設置。它似乎沒有改變任何行為。

來自 IE 的範例流量(FF 幾乎相同)

23:25:56.814732 IP InternetExplorer.27378 > Server.https: . 83070:84430(1360) ack 154 win 65382
23:25:56.814976 IP InternetExplorer.27378 > Server.https: . 84430:85790(1360) ack 154 win 65382
23:25:56.814981 IP Server.https > InternetExplorer.27378: . ack 85790 win 63920
23:25:56.815201 IP InternetExplorer.27378 > Server.https: . 85790:87150(1360) ack 154 win 65382
23:25:56.815418 IP InternetExplorer.27378 > Server.https: . 87150:88510(1360) ack 154 win 65382
23:25:56.815422 IP Server.https > InternetExplorer.27378: . ack 88510 win 63920
23:25:56.815789 IP InternetExplorer.27378 > Server.https: . 88510:89870(1360) ack 154 win 65382
23:25:56.815916 IP InternetExplorer.27378 > Server.https: . 89870:91230(1360) ack 154 win 65382
23:25:56.815922 IP Server.https > InternetExplorer.27378: . ack 91230 win 63920
23:25:56.815929 IP InternetExplorer.27378 > Server.https: P 91230:91283(53) ack 154 win 65382
23:25:56.815940 IP Server.https > InternetExplorer.27378: . ack 91283 win 63920
23:25:56.858469 IP InternetExplorer.27378 > Server.https: . 91283:92643(1360) ack 154 win 65382
23:25:56.858773 IP InternetExplorer.27378 > Server.https: . 92643:94003(1360) ack 154 win 65382
23:25:56.858779 IP Server.https > InternetExplorer.27378: . ack 94003 win 63920
23:25:56.858992 IP InternetExplorer.27378 > Server.https: . 94003:95363(1360) ack 154 win 65382
23:25:56.859284 IP InternetExplorer.27378 > Server.https: . 95363:96723(1360) ack 154 win 65382
23:25:56.859288 IP Server.https > InternetExplorer.27378: . ack 96723 win 63920
23:25:56.859483 IP InternetExplorer.27378 > Server.https: . 96723:98083(1360) ack 154 win 65382
23:25:56.859731 IP InternetExplorer.27378 > Server.https: . 98083:99443(1360) ack 154 win 65382
23:25:56.859734 IP Server.https > InternetExplorer.27378: . ack 99443 win 63920
23:25:56.859737 IP InternetExplorer.27378 > Server.https: P 99443:99496(53) ack 154 win 65382
23:25:56.859743 IP Server.https > InternetExplorer.27378: . ack 99496 win 63920
23:25:56.902029 IP InternetExplorer.27378 > Server.https: . 99496:100856(1360) ack 154 win 65382
23:25:56.902484 IP InternetExplorer.27378 > Server.https: . 100856:102216(1360) ack 154 win 65382
23:25:56.902489 IP Server.https > InternetExplorer.27378: . ack 102216 win 63920
23:25:56.902585 IP InternetExplorer.27378 > Server.https: . 102216:103576(1360) ack 154 win 65382
23:25:56.902932 IP InternetExplorer.27378 > Server.https: . 103576:104936(1360) ack 154 win 65382
23:25:56.902935 IP Server.https > InternetExplorer.27378: . ack 104936 win 63920
23:25:56.903045 IP InternetExplorer.27378 > Server.https: P 104936:105622(686) ack 154 win 65382
23:25:56.903052 IP Server.https > InternetExplorer.27378: . ack 105622 win 63920
23:30:42.621188 IP InternetExplorer.27378 > Server.https: R 105622:105622(0) ack 154 win 9300

來自 Chrome 的範例流量:

21:58:54.534554 IP chrome.20353 > server.https: P 10125:11337(1212) ack 146 win 65303
21:58:54.534566 IP server.https > chrome.20353: . ack 11337 win 29088
21:58:54.534621 IP chrome.20353 > server.https: P 11337:12549(1212) ack 146 win 65303
21:58:54.534625 IP server.https > chrome.20353: . ack 12549 win 31512
21:58:54.534961 IP chrome.20353 > server.https: . 12549:13761(1212) ack 146 win 65303
21:58:54.534966 IP server.https > chrome.20353: . ack 13761 win 33936
21:58:54.535082 IP chrome.20353 > server.https: P 13761:14392(631) ack 146 win 65303
21:58:54.535086 IP server.https > chrome.20353: . ack 14392 win 36360
21:59:40.021420 IP chrome.20353 > server.https: . ack 146 win 65303
21:59:40.021437 IP server.https > chrome.20353: . ack 14392 win 36360
22:00:25.147256 IP chrome.20353 > server.https: . ack 146 win 65303
22:00:25.147307 IP server.https > chrome.20353: . ack 14392 win 36360
22:01:10.244639 IP chrome.20353 > server.https: . ack 146 win 65303
22:01:10.244669 IP server.https > chrome.20353: . ack 14392 win 36360
22:01:55.410540 IP chrome.20353 > server.https: . ack 146 win 65303
22:01:55.410560 IP server.https > chrome.20353: . ack 14392 win 36360
22:02:40.568607 IP chrome.20353 > server.https: . ack 146 win 65303
22:02:40.568642 IP server.https > chrome.20353: . ack 14392 win 36360
22:03:25.720408 IP chrome.20353 > server.https: . ack 146 win 65303
22:03:25.720438 IP server.https > chrome.20353: . ack 14392 win 36360
22:04:10.861881 IP chrome.20353 > server.https: . ack 146 win 65303
22:04:10.861914 IP server.https > chrome.20353: . ack 14392 win 36360
22:04:55.977031 IP chrome.20353 > server.https: . ack 146 win 65303
22:04:55.977063 IP server.https > chrome.20353: . ack 14392 win 36360
22:05:41.085828 IP chrome.20353 > server.https: . ack 146 win 65303
22:05:41.085848 IP server.https > chrome.20353: . ack 14392 win 36360
22:06:26.251530 IP chrome.20353 > server.https: . ack 146 win 65303
22:06:26.251550 IP server.https > chrome.20353: . ack 14392 win 36360
22:07:11.416086 IP chrome.20353 > server.https: . ack 146 win 65303
22:07:11.416154 IP server.https > chrome.20353: . ack 14392 win 36360
22:07:56.554244 IP chrome.20353 > server.https: . ack 146 win 65303
22:07:56.554275 IP server.https > chrome.20353: . ack 14392 win 36360
22:08:41.713610 IP chrome.20353 > server.https: . ack 146 win 65303
22:08:41.713628 IP server.https > chrome.20353: . ack 14392 win 36360
22:09:26.874657 IP chrome.20353 > server.https: . ack 146 win 65303
22:09:26.874684 IP server.https > chrome.20353: . ack 14392 win 36360
22:10:12.033494 IP chrome.20353 > server.https: . ack 146 win 65303
22:10:12.033512 IP server.https > chrome.20353: . ack 14392 win 36360
22:10:57.266808 IP chrome.20353 > server.https: . ack 146 win 65303
22:10:57.266846 IP server.https > chrome.20353: . ack 14392 win 36360
22:11:42.453183 IP chrome.20353 > server.https: . ack 146 win 65303
22:11:42.453204 IP server.https > chrome.20353: . ack 14392 win 36360
22:12:27.599746 IP chrome.20353 > server.https: . ack 146 win 65303
22:12:27.599787 IP server.https > chrome.20353: . ack 14392 win 36360
22:13:12.762650 IP chrome.20353 > server.https: . ack 146 win 65303
22:13:12.762682 IP server.https > chrome.20353: . ack 14392 win 36360
22:13:57.923229 IP chrome.20353 > server.https: . ack 146 win 65303
22:13:57.923248 IP server.https > chrome.20353: . ack 14392 win 36360
22:14:43.077688 IP chrome.20353 > server.https: . ack 146 win 65303
22:14:43.077716 IP server.https > chrome.20353: . ack 14392 win 36360
22:15:28.252353 IP chrome.20353 > server.https: . ack 146 win 65303
22:15:28.252372 IP server.https > chrome.20353: . ack 14392 win 36360
22:16:13.424019 IP chrome.20353 > server.https: . ack 146 win 65303
22:16:13.424050 IP server.https > chrome.20353: . ack 14392 win 36360
22:16:58.564352 IP chrome.20353 > server.https: . ack 146 win 65303
22:16:58.564368 IP server.https > chrome.20353: . ack 14392 win 36360
22:17:43.725261 IP chrome.20353 > server.https: . ack 146 win 65303
22:17:43.725291 IP server.https > chrome.20353: . ack 14392 win 36360
22:17:48.597411 IP server.https > chrome.20353: . 146:2570(2424) ack 14392 win 36360
22:17:48.682782 IP chrome.20353 > server.https: . ack 2570 win 65448
22:17:48.682804 IP server.https > chrome.20353: . 2570:6206(3636) ack 14392 win 36360
22:17:48.785650 IP chrome.20353 > server.https: . ack 6206 win 65448
22:17:48.785666 IP server.https > chrome.20353: . 6206:11054(4848) ack 14392 win 36360
22:17:48.894777 IP chrome.20353 > server.https: . ack 8630 win 65448
22:17:48.894792 IP server.https > chrome.20353: . 11054:14690(3636) ack 14392 win 36360
22:17:48.905976 IP chrome.20353 > server.https: . ack 11054 win 65448
22:17:48.905990 IP server.https > chrome.20353: . 14690:17114(2424) ack 14392 win 36360
22:17:48.905996 IP server.https > chrome.20353: P 17114:17420(306) ack 14392 win 36360
22:17:48.998232 IP chrome.20353 > server.https: . ack 15902 win 65448
22:17:49.293519 IP server.https > chrome.20353: . 15902:17114(1212) ack 14392 win 36360
22:17:49.412748 IP chrome.20353 > server.https: . ack 17420 win 65448
22:17:49.921452 IP chrome.20353 > server.https: P 14392:14685(293) ack 17420 win 65448
22:17:49.921493 IP server.https > chrome.20353: . ack 14685 win 38784
22:17:49.922027 IP server.https > chrome.20353: P 17420:17862(442) ack 14685 win 38784
22:17:50.323363 IP chrome.20353 > server.https: . ack 17862 win 65006
22:18:04.921966 IP server.https > chrome.20353: P 17862:17899(37) ack 14685 win 38784
22:18:04.922078 IP server.https > chrome.20353: F 17899:17899(0) ack 14685 win 38784
22:18:05.080745 IP chrome.20353 > server.https: . ack 17900 win 64969
22:18:10.030035 IP chrome.20353 > server.https: F 14685:14685(0) ack 17900 win 64969
22:18:10.030079 IP server.https > chrome.20353: . ack 14686 win 38784

我不知道為什麼,但我也觀察到了同樣的行為。我在這裡記錄了我的發現。

http://app-inf.blogspot.com/2012/09/browser-load-balancer-web-server-mod-jk.html

可能無法更改 IE 以發送 Keep-alive 信號,但我們更改了負載均衡器“Keep Alive Interval”上的設置以保持連接。希望這會有所幫助。

引用自:https://serverfault.com/questions/275409