Frequently Asked Questions

How does it work?

ServStats collects statistics about successful and unsuccessful connections for every web page you visit. It periodically sends these statistics to a Diagnostic Agent that aggregates data from many users. Then when you push the "View ServStats" button, ServStats retrieves server statistics from the Diagnostic Agent.

ServStats 0.5 and above also include a diagnostic agent that can automatically diagnose network failures. The diagnostic agent performs a series of diagnostic tests and communicates the results of these tests with regional diagnostic agents. The regional diagnostic agents may then perform additional tests and inference to diagnose the failure.

Where is the ServStats toolbar? I don't see it.

The ServStats toolbar pops up automatically when a failure occurs. You can hide it again by pressing the "Close" button. Note that the toolbar only appears if a failure occurs in the currently active tab.

What kinds of failures does ServStats diagnose? What is considered a failure?

Any time Firefox fails to load a page and presents you with a network error message such as "Server not found" or "Connection timed out", that is considered a failure and ServStats will automatically diagnose it. In addition, if a page fails to load after 15 seconds and you hit the stop button, that is also considered a failure.

How does ServStats diagnose network failures?

Diagnosis in ServStats involves multiple diagnostic agents. When the ServStats toolbar starts up, it first looks up a regional diagnostic agent using a directory service ( by default). It then downloads probabilistic failure dependency knowledge from the regional agent.

When a network failure occurs, the ServStats toolbar collects several types of observations about the failure: the type of failure that occurred (e.g. DNS lookup failed, connection reset, or connection timed out); the IP address or addresses of the destination host; the number of consecutive failures that have occurred; and if probing is enabled, the result of a baseline probe indicating whether it is able to connect to a known good server ( by default). It then performs probabilistic inference using a Bayesian network to infer the most likely cause of failure given the evidence it collected and the dependency knowledge it received from the regional agent. The cause of failure may be a local network failure, a DNS lookup failure, a web server failure, or a failure in some other part of the network. If its confidence in its diagnosis is less than 95%, the ServStats toolbar sends the data it has collected to a regional agent and requests additional diagnosis.

The regional agent may then communicate with one or more specialist agents to perform more detailed diagnostic tests. Currently, these specialist agents include a server history specialist agent that infers the status of a web server based on information about past connections, a DNS lookup specialist agent that verifies the correctness of a DNS lookup, and an IP routing specialist agent that tests the status of network connectivity from your computer to the destination web server. The regional agent collects observations and beliefs from these specialist agents to infer the most likely cause of failure. Finally the regional agent communicates the result of its diagnosis to the ServStats toolbar, which then displays the final result.

Diagnosis in ServStats is based on the CAPRI architecture for exchanging information for distributed diagnosis of network failure. The flexibility and extensibility of CAPRI will enable the addition of new diagnostic capabilities and agents in the future.

The diagnosis produced by ServStats is wrong. Why?

Currently diagnosis is based on a probabilistic model of failures that incorporates the evidence available to ServStats. Due to the probabilistic nature of diagnosis, sometimes its diagnosis will be incorrect. In addition, it is possible that the model for fault diagnosis is inaccurate. As I collect more data, I will refine the model to improve accuracy.

What statistics do you collect, and what do you do with the information? What about my privacy?

We care about your privacy and collect only as much information as is necessary for diagnosing failures. ServStats collects the following information (Note that ServStats now collects more data in order to more accurately diagnose failures):

If the "Collect server stats" box is checked in ServStats Options, then for each successful or unsuccessful HTTP connection, ServStats transmits the following information to a regional agent:

  1. Destination IP address and hashed server hostname so the server history agent can correlate failures to the same server from multiple users, and so the DNS lookup and IP routing agents can perform additional diagnostic tests such as DNS lookup tests and traceroutes.
  2. Connection time to identify sequences of consecutive failures and to learn temporal failure models (e.g. how long failures last and how frequently they occur)
  3. Connection latency to identify failures associated with performance problems and unresponsive servers.
  4. Connection status (whether the connection succeeded or not, and if not, the error code from Firefox) to learn failure rates.
  5. Your computer's IP address so that the server history agent can determine how many users have been affected by a failure. Note that the regional agent anonymizes the IP address of your computer before it is stored or communicated to other agents.

Each time ServStats performs remote diagnosis (either automatically if "Automatically request remote diagnosis" is checked in ServStats Options, or when you press the "Why" button in the toolbar), in addition to the information above ServStats transmits the following to a regional agent:

  1. Outbound probe results, an HTTP request to a known good web server ( by default) in order to infer the status of your local network connectivity.
  2. Destination server hostname in order to verify the correctness of the DNS lookup.

Diagnostic agents use this information in several ways. The stats agent uses this information to compute the aggregate statistics you see when you press the "View ServStats" button. The server history agent collects this information to infer the status of a web server from the number of failures to that web server. A learning agent uses this information to learn the conditional dependencies among the results of diagnostic tests and the status of various network components. This dependency knowledge then gets sent to regional agents and the ServStats toolbar to improve the accuracy of diagnosis.

We take several measures to protect your privacy. First of all, we will not give out the data we collect; we will only use this data to perform diagnosis and to calculate aggregate server statistics for you to view. Secondly, the regional agents scramble your IP address before storing it to make it less personally identifiable. Also, ServStats only records the hashed hostname and IP address of the web sites you visit; it does not record the full URL of the web page you visited, nor does it read any form or cookie data. In addition, when requesting server statistics (though not when diagnosing failures), ServStats scrambles all hostnames using a one-way MD5 hash to make it more difficult to identify the destination host.

If you wish, you can disable the collection of statistics by going to the Options window and unchecking "Collect server stats". If "Collect server stats" is unchecked, you may still request ServStats and diagnosis, but diagnosis will not be as accurate. If "Automatically request remote diagnosis" is unchecked, then the ServStats toolbar will only perform local diagnosis unless you explicitly request remote diagnosis by clicking on the "Why" button in the toolbar. You can also disable outbound probing by unchecking the "Test connectivity using baseline probes" box.

Wait a minute. You said that ServStats only sends hashed hostnames when requesting statistics. How can the Diagnostic Agent compute server statistics without knowing the hostname?

The stats agent only needs to collect statistics for other people who have visited the same server. As long as a hash is unique to a server hostname, a stats agent can just aggregate statistics for the hashed hostname without knowing the actual hostname.

Is ServStats really free?

ServStats is distributed under the MPL/GPL/LGPL triple license. You are free to examine the source code, modify it, and redistribute it according to the terms of any one of the Mozilla Public License, version 1.1 (MPL), the GNU General Public License, version 2 or later (GPL), or the GNU Lesser General Public License, version 2.1 or later (LGPL).

The servstats project can be contacted through the mailing list or the member list.
Copyright © 2000-2020. All rights reserved. Terms of Use & Privacy Policy.