Skip to main content

Performance

Work in progress!

Below is a scrap page of interesting snippets concerning performance.

Database

squid by arc46 minimizes the performance impact on your ServiceNow instance as far as technically possible. This is achieved by aggregating SQL queries wherever possible and executing just one query. Even the retrieval of complex data structures and large amounts of entities (> 100.000) is possible with 5-20 SQL queries.

Initial Data Retrieval

The initial query of the view defined on the requested config requires one SQL query.

References

Render Type Inline SysId / Literal

No further SQL query required. All required data is already part of the base query.

Render Type Inline Reference

ONE additional SQL query per requested config, e.g. if a reference is configured with the target config cmdb_mode all references with the target config cmdb_modelwill be retrieved in one SQL query.

Render Type

Memory

Response Times and Data Volume

squid by arc46 streams data to the client as soon as possible. This is primarily done in order to reduce memory pressure on the ServiceNow instance. As a side effect the client may begin processing returned data before the query is even completed.

Time to first byte - TTFB

Typical Time-to-first-byte (TTFB) values are between 50ms - 200ms. This fairly slow response time is mainly due to the fact that the configuration must be retrieved from the database and then parsed and evaluated for each and every request as squid by arc46 is and must be stateless. This is a restriction of ServiceNow.

TODO Check with ServiceNow if this really is the case.

Total response time

Single entity requests

Retrieving a single entity, e.g. by way of a query param sys_id=0053607787bbb5503efcec230cbb354f, will take somewhere between 50ms (very best case) and 500ms. This high variance is due to many factors that squid by arc46 does not control.

Small amount of data (10-1000 entities)

This depends on the amount of data you are requesting as well as how efficient the configurations that you are requesting are.

squid by arc46 allows you to retrieve 100.000 entities, e.g. all cmdb_ci_server in your company with all relations with 10-20 SQL queries. Due to the data volume, this will still take you about 5 minutes until all data has arrived at your client.

100.000 entities with multiple level references rendered inline will cause somewhere around 1 million individual SQL queries to be executed. That takes time. Depending on the configurations (how much can be cached, etc.) such a request may take 10-15 minutes.

Single entity requests will happen virtually instantly, i.e. in 100ms to 200ms due to the time spent retrieving and parsing the configurations.

'String object has exceeded maximum permitted size of 33554432'

This can - theoretically - happen. Even though we try to write data to the response stream as soon as possible we have to