Project

General

Profile

Bug #22879

Updated by François ARMAND over 1 year ago

On large instance, wa can be overwhelmed by the Policy Update Startedeventlog, especially with "alreadyPending="true"" details 
 The alreadyPending=true don't bring meaningful information there, and ought to be a simple log in debug in the webapp logs 

 As a result, it's nearly impossible to search in eventlog, and index is really huge. 

 ## Workaround: removing existing useless AutomaticStart event log  

 1/ delete the useless event logs:  
 <pre> 
 delete from eventlog where eventtype = 'AutomaticStartDeployement' and data::text like '<entry><addPending %'; 
 </pre> 

 2/ reclam space and clean-up index. Be careful, a full vaccuum locks the table, which means that during the clean-up, no new event-log can be added. You should do that with rudder stopped if you event log table is big*.  

 <pre> 
 vaccuum full eventlog; 
 </pre> 

 * to get metrics regarding tables size in Rudder, you can execute that SQL query:  

 <pre> 
 WITH RECURSIVE pg_inherit(inhrelid, inhparent) AS 
     (select inhrelid, inhparent 
     FROM pg_inherits 
     UNION 
     SELECT child.inhrelid, parent.inhparent 
     FROM pg_inherit child, pg_inherits parent 
     WHERE child.inhparent = parent.inhrelid), 
 pg_inherit_short AS (SELECT * FROM pg_inherit WHERE inhparent NOT IN (SELECT inhrelid FROM pg_inherit)) 
 SELECT table_schema 
     , TABLE_NAME 
     , row_estimate 
     , pg_size_pretty(total_bytes) AS total 
     , pg_size_pretty(index_bytes) AS INDEX 
     , pg_size_pretty(toast_bytes) AS toast 
     , pg_size_pretty(table_bytes) AS TABLE 
   FROM ( 
     SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes 
     FROM ( 
          SELECT c.oid 
               , nspname AS table_schema 
               , relname AS TABLE_NAME 
               , SUM(c.reltuples) OVER (partition BY parent) AS row_estimate 
               , SUM(pg_total_relation_size(c.oid)) OVER (partition BY parent) AS total_bytes 
               , SUM(pg_indexes_size(c.oid)) OVER (partition BY parent) AS index_bytes 
               , SUM(pg_total_relation_size(reltoastrelid)) OVER (partition BY parent) AS toast_bytes 
               , parent 
           FROM ( 
                 SELECT pg_class.oid 
                     , reltuples 
                     , relname 
                     , relnamespace 
                     , pg_class.reltoastrelid 
                     , COALESCE(inhparent, pg_class.oid) parent 
                 FROM pg_class 
                     LEFT JOIN pg_inherit_short ON inhrelid = oid 
                 WHERE relkind IN ('r', 'p') 
              ) c 
              LEFT JOIN pg_namespace n ON n.oid = c.relnamespace 
   ) a 
   WHERE oid = parent 
 ) a 
 ORDER BY total_bytes DESC; 
 </pre> huge

Back