Investigate Preconnect HttpStreamFactoryImpl::Job |
||||
Issue descriptionThis is to follow up on Issue 700617 . erikchen@'s trace (https://drive.google.com/a/google.com/file/d/0B6ho_7_ut5e1dXVnTGx6d0ExLWs/view?usp=sharing) shows a 348 Preconnect HttpStreamFactoryImpl::Job. 348 sounds excessive. We need to investigate whether this expected or something else is going on.
,
Mar 27 2017
Issue 700617 fixed a problem in QUIC. Preconnect Jobs do not go through QUIC, so it's likely something else is going on.
,
Apr 3 2017
I have been running Chrome with zhongyi@'s Issue 700617 fix for a week now. I wasn't able to reproduce this issue. I will try do some cleanups and see if we can find anything.
,
Apr 3 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/14af3e715ff775b85391f96baf0847e3b53ccf38 commit 14af3e715ff775b85391f96baf0847e3b53ccf38 Author: xunjieli <xunjieli@chromium.org> Date: Mon Apr 03 15:26:14 2017 Remove unreachable code in HttpStreamFactoryImpl::Job::OnPreconnectsComplete BUG= 704956 ,475060 Review-Url: https://codereview.chromium.org/2791923003 Cr-Commit-Position: refs/heads/master@{#461433} [modify] https://crrev.com/14af3e715ff775b85391f96baf0847e3b53ccf38/net/http/http_stream_factory_impl_job.cc
,
Apr 10 2017
,
Apr 18 2017
correction to #2. Preconnect Jobs go through QUIC, so this might be an artifact of the synchronous crypto connect bug 700617 . + zhongyi@, rch@ to confirm. Thanks to zhongyi@, we now have UMA histograms (added in Issue 704988 ) to detect this case. Leaving this bug open while we gather more data.
,
Apr 18 2017
Preconnect jobs can go through QUIC, and the leak can be caused if the server the preconnect job trying to connect to is trapped in the synchronous crypto connect error state. Preconnect job via QUIC: When JobController creates preconnect job(which is always set in main job), it try to GetAlternativeServiceFor the request. If we get a valid alt svc, then QUIC job will be used to preconnect, it's set in main_job, but actually is an alternative service job. https://cs.chromium.org/chromium/src/net/http/http_stream_factory_impl_job_controller.cc?q=JobController+package:%5Echromium$&l=135 We have sample NetLogs to confirm that preconnect job can use QUIC: 448: HTTP_STREAM_JOB_CONTROLLER Start Time: 2017-04-10 17:50:29.221 t= 0 [st= 0] +HTTP_STREAM_JOB_CONTROLLER [dt=18] --> is_preconnect = true --> url = "https://www.google.com/" t= 1 [st= 1] HTTP_STREAM_REQUEST_STARTED_JOB --> source_dependency = 449 (HTTP_STREAM_JOB) t=18 [st=18] -HTTP_STREAM_JOB_CONTROLLER 449: HTTP_STREAM_JOB https://www.google.com/ Start Time: 2017-04-10 17:50:29.221 t= 0 [st= 0] +HTTP_STREAM_JOB [dt=18] --> alternative_service = "quic www.google.com:443" --> original_url = "https://www.google.com/" --> priority = "IDLE" --> source_dependency = 448 (HTTP_STREAM_JOB_CONTROLLER) --> url = "https://www.google.com/" t= 1 [st= 1] +PROXY_SERVICE [dt=9] t=10 [st=10] PROXY_SERVICE_RESOLVED_PROXY_LIST --> pac_string = "DIRECT" t=10 [st=10] -PROXY_SERVICE t=10 [st=10] HTTP_STREAM_JOB_PROXY_SERVER_RESOLVED --> proxy_server = "DIRECT" t=10 [st=10] HTTP_STREAM_JOB_WAITING [dt=0] --> should_wait = false t=11 [st=11] HTTP_STREAM_JOB_INIT_CONNECTION [dt=0] t=18 [st=18] -HTTP_STREAM_JOB
,
Apr 18 2017
Thanks zhongyi! Let's WontFix this one. |
||||
►
Sign in to add a comment |
||||
Comment 1 by shrike@chromium.org
, Mar 27 2017Labels: Performance-Memory