The "chrome://net-internals/" webpage is a special URL in chromium that dumps a view of the network stack's internal state.
This data can be helpful when debugging performance or connectivity problems.
It includes information on request performance, proxy settings and DNS cache.
The URL format is:
If filter is blank then all of the information will be displayed. Otherwise filter should be the name of a subsection.
Subsections are organized hiearchically, and use dotted names.
For example, to see all of the information relating to proxies use the URL "chrome://net-internals/proxyservice". Whereas to print just the proxy settings construct the URL "chrome://net-internals/proxyservice.config".
Much of the information on the "chrome://net-internals/" page is captured and visualized using a "LoadLog" (src/net/load_log.h).
The LoadLog is simply an event stream showing when various actions were started/completed.
Here is an example LoadLog:
t=1814517460: +INIT_PROXY_RESOLVER [dt=45] t=1814517460: +INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT [dt= 3] t=1814517463: -INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT t=1814517463: +INIT_PROXY_RESOLVER_SET_PAC_SCRIPT [dt=42] t=1814517506: -INIT_PROXY_RESOLVER_SET_PAC_SCRIPT t=1814517506: -INIT_PROXY_RESOLVER
So, the example above reads as: "It took 45 ms to initialize the proxy resolver -- 3 seconds to download the PAC script (INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT), and 42 milliseconds to parse and test it (INIT_PROXY_RESOLVER_SET_PAC_SCRIPT)".
Generally the entries in a LoadLog are ordered chronologically.
However, there are some instances when this isn't the case.
For example, with TCP socket "late binding", the request's LoadLog will first show a SOCKET_POOL_WAITING_IN_QUEUE event. Only once the ConnectJob completes will the SOCKET_POOL_CONNECT_JOB sequence be appended to the log for this request. (hence the times within the SOCKET_POOL_CONNECT_JOB sequence may predate the preceding line).
This subsection shows the effective proxy settings that Chromium is using.
Generally this will correspond to the system's proxy settings, or an override that was specified on the command line
Here is example of what it looks like:
Automatic settings: Auto-detect: Yes Custom PAC script: http://custom/pac.js Manual settings: Proxy server: single-proxy:81 Bypass list: [None] Bypass local names: No
If there is a proxy server per URL scheme, then the "Proxy server" section will break it down by HTTP/HTTPS/FTP/SOCKS.
When there is conflicting choices between the "Automatic settings" and "Manual settings", the proxy settings fallback from automatic to manual similarly to IE.
This subsection shows the proxy initialization sequence that happened for the current proxy settings.
This initialization sequence gets run each time the proxy settings change (and is responsible for things like downloading and testing custom PAC scripts).
Generally this latency will be attributed to the very first network request that chromium issues. It will show up in the requests's LoadLog as PROXY_SERVICE_WAITING_FOR_INIT_PAC. The specifics of that latency are shown in proxyservice.init_log.
This subsection shows the DNS cache that Chromium is using.
Note that a single IP address is printed for each entry, but in reality there may be a full list of network addresses associated with this cache entry
This subsection shows the requests which are currently in progress.
It is ordered from most recent to oldest.
Check this to find the LoadLog of hung requests.
Note that the request to load "chrome://net-internals/" itself will always show up as an outstanding request (since it is outstanding when we execute the code that populates this subsection).
This subsection shows the most recent requests that have completed.
It is ordered from most recent (completion time) to oldest (completion time).
Check this to find the Load log for a recently issued request.