Good practices to improve instance performance through Rowcount, Related Lists and DashboardsIssue <!-- div.margin { padding: 10px 40px 40px 30px; } table.tocTable { border: 1px solid; border-color: #e0e0e0; background-color: #fff; } .title { color: #d1232b; font-weight: normal; font-size: 28px; } h1 { color: #d1232b; font-weight: normal; font-size: 21px; margin-bottom: 5px; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #cccccc; } h2 { color: #646464; font-weight: bold; font-size: 18px; } h3 { color: #000000; font-weight: bold; font-size: 16px; } h4 { color: #666666; font-weight: bold; font-size: 15px; } h5 { color: #000000; font-weight: bold; font-size: 13px; } h6 { color: #000000; font-weight: bold; font-size:14px; } ul, ol { margin-left: 0; list-style-position: outside; } --> The performance of a ServiceNow instance can be impacted by user preferences in a number of ways, and this KB details three of the more common settings that can be set as default values for users and/or to reset values for your user base to quickly change the user experience. User preference row counthomepages vs dashboards3. deferring loading of 'Related list' ResolutionRowcount Slow running queries have an impact on the instance performance by occupying a thread until the query has completed.The 'rowcount' property impacts many areas of the platform: all list, homepages, related lists, reports, etcTherefore modifying the 'rowcount' value can have a direct impact on the instance. The ServiceNow default 'rowcount' value is 20. ServiceNow's recommendation is 20, or 50 if needed. For more information, see Improve performance by displaying "just enough" data To see all users in an instance that have modified this property you can visit the following URL (replacing __INSTANCE__ with your own instance name):https://__INSTANCE__.service-now.com/sys_user_preference_list.do?sysparm_query=name%3Drowcount%5Evalue!%3D20%5EORvalue%3DNULL%5Evalue!%3D15%5EORvalue%3DNULL%5Evalue!%3D10%5EORvalue%3DNULL Depending on your use case, you could test in a sub production and remove 100+ from the list, understanding that list performance will be slower using 50+ These are the steps to remove the choice of "100 rows per page":i. Log in to your instance (as an Administrator)ii. On the left side navigation panel, search and open "All Properties"iii. On the properties page, search and open name='glide.ui.per_page'directly via - https://__INSTANCE__.service-now.com/nav_to.do?uri=sys_properties.do?sys_id=fc794773c0a80169017b5179c629af26iv. You will see 10,15,20,50,100.. in the Value field.v.Modify the value to 10,15,20,50 and click update. While this will restrict the list moving forward, existing users with 100+ will need to be modified.You can visit https://__INSTANCE__.service-now.com/sys_user_preference_list.do?sysparm_query=GOTOnameLIKErowcount&sysparm_first_row=1&sysparm_view= and then modify the filter to include 100+ and then right click and multiple update the Value for all records. eg users with 100+ set to 50. Homepages Vs Dashboards Homepages on the ServiceNow platform will run a query for every widget on the page, and once all querying have returned data THEN it will process the page and render it back to the client browser. Long running homepages can appear to be 'slow' or not return any data while those queries run in the background. Should you have 10 widgets on a homepage, and only see 2-3 before scrolling down the page it would still query all 10 widgets and then present it back to the client. By creating dashboard versions of a homepage, the platform will only run queries for the widgets displayed on the client browser. For example, in the 10 widget example you would initially see 2 widgets on the dashboard before scrolling down but the platform will only query for the widgets that are visible (the first time they are viewed) ... keep scrolling and you'll trigger the next queries and so on. Dashboards also allow you to introduce 'tabs' to the dashboard. This is significant because widgets within sub tabs do not run queries until you view that active tab. Only the queries from the active tab widgets run.A dashboard does not make slow widgets faster, but it does change the user experience. Instead of waiting on a slower homepage to load you are only presented with the data that you can see. Therefore if you only review a widget once a week / month etc - users can consider moving that to it's own Dashboard sub tab - thus speeding up their initial dashboard view. See: [Doc] Create a dashboard version of a homepage With regards to homepages, something to also consider is resetting a users default homepage to something more light weight.Users may add lots of widgets to a homepage which also auto refreshes, however their end goal may be to login to their instance and visit something else specifically. In this scenario they would have to run the slower homepage before moving onto their target goal. You can set a temporary light weight page that instantly loads, and then gives them the option to click through to their homepage if they wish. See: KB0712404 - Setting a Light Weight Home Page for Users Deferred Related List Loading By Default, all related lists load at the time a Form loads. ie: before rendering the form to a user, every related list query has to first run. Once all the data has been queried, THEN the form is presented to a user.Similar to the rowcount setting, there is also another variable that can be set: 'glide.ui.defer_related_lists'.This loads the related lists after the form has loaded. This can greatly increases the response time of forms. By setting related lists to load after a form loads, the user will almost immediately see the form data, and by the time they scroll down to the related lists they are likely to be have loaded in the background.You can easily test this recommendation by setting it to 'deferred' for troubleshooting purposes, and for longer term health this can be se to "ondemand" so that related lists only load if the users clicks on the "load related lists" button. This is a true / false setting. You can set properties at the global level, which are then overridden by the user preference (if a user has explicitly chosen a different setting). i. Go to the system properties, and see if it's set;https://__INSTANCE__.service-now.com/sys_properties_list.do?sysparm_query=name%3Dglide.ui.defer_related_lists- we can see 'glide.ui.related_list_timing' is not set. To set the Global user preference;ii. This will not affect users that have made a choice and have a value set. see: KB0695391 How to make 'After Form Loads' or 'On-demand' the default 'Related list loading' for all users?Related Linksi. Common Admin TasksSee Instance Performance Maintenance and AdministrationThis document begins the conversation on reviewing performance data within the instance, looking over slow transactions / jobs / scripts and trending top transactions. It also discusses reviewing table data growth within an instance and how to review the Performance Metrics dashboard. For more information see https://docs.servicenow.com/csh?topicname=c_PerformanceMetrics.html&version=latestii. Performance Best Practice for Efficient Queries - Top 10 PracticesPerformance Best Practice for Efficient Queries - Top 10 Practicesiii. KB0750239 Monitoring Performance Metrics in your ServiceNow Instance.iv. KB0712404 - Setting a Light Weight Home Page for Users.v. KB0695391 How to make 'After Form Loads' or 'On-demand' the default 'Related list loading' for all users?vi. KB1351939 - Improve performance of a ServiceNow instance through ROWCOUNT setting.