Performance
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_model
will 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