Uploaded image for project: 'Grouper'
  1. Grouper
  2. GRP-5319

look at performance of readonly queries

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Unresolved
    • Minor
    • None
    • None
    • None
    • None

    Description

      Evan Hughes
      1 day ago
      Does anyone have any advice if a folder with a few policy groups (15) should take around 2.5s to load. Infra is K8S pods with 3000 cpu and 3g of memory for the jvm, DB is Aurora Postgres. Grouper is 4.10.3, with DataDog APM looks like the db is doing 213 sql requests of 'SHOW TRANSACTION LEVEL' for half the time which I assume is c3p0 / hibernate?

      Carey Black
      23 hours ago
      a folder with a few policy groups (N) should take around 2.5s to load.
      Do other folders take a very different amount of time?
      FWIW: My guess is that the work to resolve the privileges for the UI user on the folder's objects ( itself and nested folders and groups ) is likely what you are observing. And you may find that if you navigate away from the folder and back to it that the 'time to display' is better on re-display than on 'first display'.
      I know that the project has moved a lot of the privilege (re-)calculations into jobs. And I think a lot of that is also cached in the UI RAM too. Which is why "redisplay" may be faster than the "first display". (Got to build the cache on first read. )

      Carey Black
      23 hours ago
      If you have multiple UI nodes you likely are already using a sticky session too. ( If not that could also play in to more slowness if you are bouncing across multiple UI nodes between calls. )

      Chris Hyzer
      21 hours ago
      are all your indexes there (do a gsh -registry -deep -check)? Sometimes vacuum analyzing all the indexes helps

      Evan Hughes
      17 hours ago
      Grouper ddl object type 'Grouper' has db/ddl version: 0 (introduced in null) and container/grouperJava version: 44 (introduced in 2.6.18)
      Grouper ddl object type 'Subject' has db/ddl version: 0 (introduced in null) and container/grouperJava version: 1 (introduced in 1.4.0)
      Grouper database schema DDL requires updates
      (should run script manually and carefully, in sections, verify data before drop statements, backup/export important data before starting, follow change log on confluence, dont run exact same script in multiple envs - generate a new one for each env),
      script file is:
      /opt/grouper/grouperWebapp/WEB-INF/ddlScripts/grouperDdl_20240221_23_09_58_083.sql
      Note: this script was not executed due to option passed in
      To run script via gsh, carefully review it, then run this:
      gsh -registry -runsqlfile /opt/grouper/grouperWebapp/WEB-INF/ddlScripts/grouperDdl_20240221_23_09_58_083.sql

      SUCCESS: Database DDL is correct!

      Note: Database version for Grouper: 44 (2.6.18)
      Note: Java version for Grouper: 44 (2.6.18)
      Success: Database version is the same as the Java codebase Grouper version
      Success: Table 'grouper_attr_assign_action': Table is up to date. 7 columns, 1 indexes, 1 foreign keys.
      Success: Table 'grouper_attr_assign_action_set': Table is up to date. 10 columns, 3 indexes, 3 foreign keys.
      Success: Table 'grouper_attribute_assign': Table is up to date. 20 columns, 8 indexes, 8 foreign keys.
      Success: Table 'grouper_attribute_assign_value': Table is up to date. 10 columns, 4 indexes, 1 foreign keys.
      Success: Table 'grouper_attribute_def': Table is up to date. 28 columns, 3 indexes, 1 foreign keys.
      Success: Table 'grouper_attribute_def_name': Table is up to date. 13 columns, 2 indexes, 2 foreign keys.
      Success: Table 'grouper_attribute_def_name_set': Table is up to date. 10 columns, 3 indexes, 3 foreign keys.
      Success: Table 'grouper_attribute_def_scope': Table is up to date. 9 columns, 1 indexes, 1 foreign keys.
      Success: Table 'grouper_audit_entry': Table is up to date. 30 columns, 13 indexes, 1 foreign keys.
      Success: Table 'grouper_audit_type': Table is up to date. 20 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_cache_instance': Table is up to date. 2 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_cache_overall': Table is up to date. 2 columns, 0 indexes, 0 foreign keys.
      Success: Table 'grouper_change_log_consumer': Table is up to date. 6 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_change_log_entry': Table is up to date. 16 columns, 15 indexes, 1 foreign keys.
      Success: Table 'grouper_change_log_entry_temp': Table is up to date. 16 columns, 13 indexes, 0 foreign keys.
      Success: Table 'grouper_change_log_type': Table is up to date. 19 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_composites': Table is up to date. 9 columns, 8 indexes, 4 foreign keys.
      Success: Table 'grouper_config': Table is up to date. 13 columns, 4 indexes, 0 foreign keys.
      Success: Table 'grouper_ddl': Table is up to date. 5 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_ddl_worker': Table is up to date. 5 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_ext_subj': Table is up to date. 16 columns, 2 indexes, 0 foreign keys.
      Success: Table 'grouper_ext_subj_attr': Table is up to date. 10 columns, 3 indexes, 1 foreign keys.
      Success: Table 'grouper_failsafe': Table is up to date. 11 columns, 2 indexes, 0 foreign keys.
      Success: Table 'grouper_fields': Table is up to date. 7 columns, 3 indexes, 0 foreign keys.
      Success: Table 'grouper_file': Table is up to date. 9 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_group_set': Table is up to date. 22 columns, 15 indexes, 10 foreign keys.
      Success: Table 'grouper_groups': Table is up to date. 21 columns, 17 indexes, 3 foreign keys.
      Success: Table 'grouper_last_login': Table is up to date. 4 columns, 4 indexes, 1 foreign keys.
      Success: Table 'grouper_loader_log': Table is up to date. 29 columns, 6 indexes, 0 foreign keys.
      Success: Table 'grouper_members': Table is up to date. 26 columns, 20 indexes, 0 foreign keys.
      Success: Table 'grouper_memberships': Table is up to date. 16 columns, 21 indexes, 7 foreign keys.
      Success: Table 'grouper_message': Table is up to date. 11 columns, 6 indexes, 1 foreign keys.
      Success: Table 'grouper_mship_req_change': Table is up to date. 8 columns, 4 indexes, 0 foreign keys.
      Success: Table 'grouper_password': Table is up to date. 16 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_password_recently_used': Table is up to date. 8 columns, 0 indexes, 1 foreign keys.
      Success: Table 'grouper_pit_attr_assn_actn': Table is up to date. 9 columns, 4 indexes, 1 foreign keys.
      Success: Table 'grouper_pit_attr_assn_actn_set': Table is up to date. 11 columns, 6 indexes, 3 foreign keys.
      Success: Table 'grouper_pit_attr_assn_value': Table is up to date. 12 columns, 8 indexes, 1 foreign keys.
      Success: Table 'grouper_pit_attr_def_name': Table is up to date. 10 columns, 6 indexes, 2 foreign keys.
      Success: Table 'grouper_pit_attr_def_name_set': Table is up to date. 11 columns, 6 indexes, 3 foreign keys.
      Success: Table 'grouper_pit_attribute_assign': Table is up to date. 17 columns, 12 indexes, 8 foreign keys.
      Success: Table 'grouper_pit_attribute_def': Table is up to date. 10 columns, 7 indexes, 1 foreign keys.
      Success: Table 'grouper_pit_config': Table is up to date. 20 columns, 4 indexes, 0 foreign keys.
      Success: Table 'grouper_pit_fields': Table is up to date. 9 columns, 5 indexes, 0 foreign keys.
      Success: Table 'grouper_pit_group_set': Table is up to date. 19 columns, 18 indexes, 9 foreign keys.
      Success: Table 'grouper_pit_groups': Table is up to date. 9 columns, 6 indexes, 1 foreign keys.
      Success: Table 'grouper_pit_members': Table is up to date. 11 columns, 6 indexes, 0 foreign keys.
      Success: Table 'grouper_pit_memberships': Table is up to date. 13 columns, 11 indexes, 5 foreign keys.
      Success: Table 'grouper_pit_role_set': Table is up to date. 11 columns, 6 indexes, 3 foreign keys.
      Success: Table 'grouper_pit_stems': Table is up to date. 9 columns, 6 indexes, 1 foreign keys.
      Success: Table 'grouper_prov_duo_user': Table is up to date. 16 columns, 3 indexes, 0 foreign keys.
      Success: Table 'grouper_prov_zoom_user': Table is up to date. 15 columns, 4 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_blob_triggers': Table is up to date. 4 columns, 0 indexes, 1 foreign keys.
      Success: Table 'grouper_qz_calendars': Table is up to date. 3 columns, 0 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_cron_triggers': Table is up to date. 5 columns, 0 indexes, 1 foreign keys.
      Success: Table 'grouper_qz_fired_triggers': Table is up to date. 13 columns, 6 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_job_details': Table is up to date. 10 columns, 2 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_locks': Table is up to date. 2 columns, 0 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_paused_trigger_grps': Table is up to date. 2 columns, 0 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_scheduler_state': Table is up to date. 4 columns, 0 indexes, 0 foreign keys.
      Success: Table 'grouper_qz_simple_triggers': Table is up to date. 6 columns, 0 indexes, 1 foreign keys.
      Success: Table 'grouper_qz_simprop_triggers': Table is up to date. 14 columns, 0 indexes, 1 foreign keys.
      Success: Table 'grouper_qz_triggers': Table is up to date. 16 columns, 12 indexes, 1 foreign keys.
      Success: Table 'grouper_recent_mships_conf': Table is up to date. 6 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_role_set': Table is up to date. 10 columns, 3 indexes, 3 foreign keys.
      Success: Table 'grouper_stem_set': Table is up to date. 10 columns, 3 indexes, 3 foreign keys.
      Success: Table 'grouper_stem_view_privilege': Table is up to date. 3 columns, 2 indexes, 0 foreign keys.
      Success: Table 'grouper_stems': Table is up to date. 16 columns, 13 indexes, 3 foreign keys.
      Success: Table 'grouper_sync': Table is up to date. 14 columns, 2 indexes, 0 foreign keys.
      Success: Table 'grouper_sync_group': Table is up to date. 27 columns, 8 indexes, 1 foreign keys.
      Success: Table 'grouper_sync_job': Table is up to date. 14 columns, 1 indexes, 1 foreign keys.
      Success: Table 'grouper_sync_log': Table is up to date. 14 columns, 2 indexes, 1 foreign keys.
      Success: Table 'grouper_sync_member': Table is up to date. 28 columns, 9 indexes, 1 foreign keys.
      Success: Table 'grouper_sync_membership': Table is up to date. 15 columns, 6 indexes, 3 foreign keys.
      Success: Table 'grouper_table_index': Table is up to date. 6 columns, 1 indexes, 0 foreign keys.
      Success: Table 'grouper_time': Table is up to date. 5 columns, 0 indexes, 0 foreign keys.
      Success: View 'grouper_attr_asn_asn_attrdef_v': View is up to date. 23 columns.
      Success: View 'grouper_attr_asn_asn_efmship_v': View is up to date. 27 columns.
      Success: View 'grouper_attr_asn_asn_group_v': View is up to date. 24 columns.
      Success: View 'grouper_attr_asn_asn_member_v': View is up to date. 24 columns.
      Success: View 'grouper_attr_asn_asn_mship_v': View is up to date. 28 columns.
      Success: View 'grouper_attr_asn_asn_stem_v': View is up to date. 24 columns.
      Success: View 'grouper_attr_asn_attrdef_v': View is up to date. 14 columns.
      Success: View 'grouper_attr_asn_efmship_v': View is up to date. 20 columns.
      Success: View 'grouper_attr_asn_group_v': View is up to date. 16 columns.
      Success: View 'grouper_attr_asn_member_v': View is up to date. 16 columns.
      Success: View 'grouper_attr_asn_mship_v': View is up to date. 20 columns.
      Success: View 'grouper_attr_asn_stem_v': View is up to date. 15 columns.
      Success: View 'grouper_attr_assn_action_set_v': View is up to date. 10 columns.
      Success: View 'grouper_attr_def_name_set_v': View is up to date. 10 columns.
      Success: View 'grouper_attr_def_priv_v': View is up to date. 12 columns.
      Success: View 'grouper_audit_entry_v': View is up to date. 45 columns.
      Success: View 'grouper_aval_asn_asn_attrdef_v': View is up to date. 28 columns.
      ...... all success further down
      (edited)

      Evan Hughes
      17 hours ago
      @black.123
      only single node for the UI currently as theirs 0 users other than the admins of the service

      Chris Hyzer
      14 hours ago
      did you vacuum analyze everything?
      New

      Evan Hughes
      10 hours ago
      yup, no significant change, the instance is basically fresh

      Chris Hyzer
      < 1 minute ago
      if you can get by for now we can look at this in a future release. i think the data layer does not know there are readonly queries about to happen when the connection is retrieved from the pool, so it is doing extra overhead in case there is a transaction about to happen. if we can reduce this for the SELECT only SQL calls maybe it would significantly improve the performance? we need to look at it

      Attachments

        Activity

          People

            chris.hyzer@at.internet2.edu Chris Hyzer (upenn.edu)
            chris.hyzer@at.internet2.edu Chris Hyzer (upenn.edu)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: