Skip to content
Max S edited this page Oct 14, 2016 · 6 revisions

Profiler

Overview

The Snipe core provides some low-level real-time statistics to the editor. The amount of that information can be increased by turning on the in-engine profiler. It will calculate time spent processing client requests on all slave servers and cache server and executing SQL queries. It also provides information regarding network traffic, as well as the asynchronous worker and message serializing components.

There are three distinct pages of profiler information: the main page with cache server information and profile editor controls, the slave server information page and the data blocks cache information page.

Main page

On top of the main page you can see the links to profiler controls (start/stop and reset), a list of connected slave servers and a link to data blocks information page. Below that there is the following information:

  • The slave server thread statistics: total number of requests, list of requests made from these slave servers, time spent working on it, min/avg/max time, the time spent per single request of this type and percentage of total time spent. Some of the tags have "callPost" suffixes added. This means that some work was done in the CacheServer.callPost() method after that request.
  • Asynchronous worker statistics: each request routed into the asynchronous worker is tagged and measured. At the very least, the user registration goes through it.
  • Network traffic statistics: this only concerns server to server or server to editor traffic.
  • Database statistics: each SQL query made into the database is stripped of unique identifiers and the like and the time spent executing it is measured. Though the cache server has a pool of database connections, they are considered one connection for the purpose of statistics gathering. There are also separate connections for the data blocks cache manager and the asynchronous worker. These are counted separately.

Note the last field in all of the tables: "--- the rest ---". Each potential table row that takes less than one percent of the total is summed into this row.

Slave server page

When you click a link to the specific slave server on the main page, you will go to a page that has statistics collected on that server. That information includes:

  • The table of network threads is for receiving client messages with the amount of open sockets on each of them. Below is the amount of these threads and total amount of sockets.
  • Client response senders information: for each sender thread this includes the total amount of messages added to the queue and the amount of unsent messages (due to client disconnecting or network problems).
  • Server configuration file contents.
  • Main thread profiler information: each row in the table corresponds to a client message handled in the main thread. That also includes server notifications handling (with "onCacheNotify" prefix).
  • Time spent sending and receiving cache server requests: since all of these are synchronized and ran in main thread, the time spent will be a subset of the previous table.
  • Network traffic information: this includes only the traffic sent from this slave server to the clients. There are two parts of that table. The first one calculates the uncompressed traffic, the second one is for the compressed.
  • Message serializer information: That includes a row for every serializer thread that shows how much time was spent serializing and compressing client responses.
  • Detailed information for sending and receiving data through the cache connection.

Data blocks cache page

This page holds real-time statistics for the data blocks cache. You do not need to start the profiler to see it. There is a table for each type of block containing the various data blocks' statistics variables.

Clone this wiki locally