Skip to main content

ServiceNow Good Performance and Monitoring Links

 ServiceNow Good Performance and Monitoring Links


See the following ServiceNow Knowledge Articles:

support.servicenow.com
When users report general performance issues, slowness, or interrupted access on all applications, there are a number of possible symptoms: Transactions take longer than expected. Unable to connect to
support.servicenow.com
Symptoms Unable to log in to an instance. The instance no longer responds to keyboard or mouse commands. Operations seem to run slow or slower than they did before. Slow performance across all or specific
support.servicenow.com
The purpose of this landing page is to help guide customers and administrators establish a performance footing towards implementing and maintaining their instance for performance. The mentioned articles
support.servicenow.com
Reviewed and maintained resource page for most common, high-impacting Performance issues on ServiceNow instances. Performance Troubleshooting KB0517282: Troubleshooting case where all users experience


Performance Troubleshooting

  • KB0517282: Troubleshooting case where all users experience performance issues on all applications
  • KB0755182: Steps to determine the cause of a cache flush
  • KB0656152: Troubleshooting instance response times | homepages
  • KB0584420: Troubleshooting guide: using the transaction logs
  • KB0997495: How to troubleshoot a slow transaction
  • KB0517241: Troubleshooting slow performance
  • KB0517274: Identifying abnormal JVM memory utilization
  • KB0517277: Identifying high transaction concurrency
  • KB0662260: Where to look when an instance experiences performance issues
  • KB0635449: Resolving slowness / latency when populating connect chat windows (/$chat_support.do)
  • KB0635134: Resolving "exhausted default semaphores" errors caused by Service Portal widgets having poorly defined record watcher (recordWatch) calls
  • KB0755068: Very slow response time

How To 

  • KB0517269: Gathering stats.do and threads.do page data
  • KB0647698: How to obtain slow widget debug timing in Service Portal
  • KB0635968: How to cancel a long running transaction | all nodes
  • KB0634930: How to change the stats.do tag "DEMO Server"
  • KB0745198: How to get the top 10 values from a table using the GlideAggregate function
  • KB0661882: How to set dictionary attributes quickly for all fields in a table or set of tables
  • KB0723049: How to detect stuck scheduled jobs that may be stuck on a non-existent node
  • KB0656014: How to cancel your slow user transactions
  • KB0727199: How to identify slow lookup variables in the Service Catalog
  • KB0634955: How to change the homepage refresh behavior
  • KB0564339: Understanding browser usage from transaction logs
  • KB0977234: Text Re-index a table without impacting current search results

Improve User Performance

  • KB0683275: Internet Explorer 11 performance - no longer supported
  • KB0563671: Improving homepage performance
  • KB0635324: Optimize widget rendering time on responsive dashboards
  • KB0635119: Modifying 'Workflow Stage' field from Graphical to Text
  • KB0517272: Verifying whether you have inefficient business rules

Best Practices

  • KB0750152: Good practices to improve instance performance through row count, related lists and dashboards
  • KB0546788: Best practices – general planning
  • Community: Server-side Coding in ServiceNow
  • KB0687724: ServiceNow load testing

Event Queue (sysevent) 

  • KB0721202: Reduce un-necessary text index events from causing overhead on events processing
  • KB0676909: Create a dedicated event processor
  • KB0686835: Platform events processing
  • KB0755187: Event queue has very high number of queued events
  • KB0687779: Making the post clone regenerate text index process faster

Data Management

  • KB0724183: A script to automatically clean up sys_audit_delete and sys_audit_relation records
  • KB0780216: Data retention, rotation, cleanup and instance size
  • KB0694151: Use "Table Cleaner" to remove unwanted data
  • KB0551417: Troubleshooting the Table Cleaner scheduled job
  • KB0789808: Background script execution (delete action) taking hours to complete and appears hung

Database 

  • KB0782916: How to create indexes using the Index Suggestion Engine (ISE)
  • KB0722985: Utilizing the INSTANCEOF operator to improve cmdb_ci queries.
  • KB0686002: Identifying and fixing slow queries in Service Portal widgets
  • KB0647687: Using "Active Query Index Hints" to improve slow query execution

Integrations

  • KB0517267: Managing network connectivity issues
  • KB0547347: Outbound SOAP request times out at 175 seconds when going through a MID server
  • KB0521688: Troubleshooting network performance data collection
  • KB0749897: How to solve "infinite email" loops

On Premise 

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){...

Code a pause/wait - gs.sleep or gs.wait alternative, pause script for specified seconds (timer)

Code a pause/wait - gs.sleep / gs.wait alternative, pause script for specified seconds (timer)  e.g. 10 seconds: do_sleep ( 10000 ); function do_sleep ( milliseconds ) { var start = new Date (). getTime (); for ( var i = 0 ; i < 1e7 ; i ++) { if (( new Date (). getTime () - start ) > milliseconds ){ gs . print ( 'waking up!' ); break ; } } }