Job.getBuildHealthReports can be expensive, especially with Maven projects (see JENKINS-19392). Putting jobs into folders does not help, because Folder.getBuildHealthReports recursively traverses them, and the default WorstChildHealthMetric checks the result of each leaf. It should not be called synchronously during page rendering. Rather, WeatherColumn/column.jelly should use an AJAX callback of some kind, effective while the page is fronted. So you would get a quick page load, with some icons filling in progressively. Still puts load on the server but potentially much less.

          [JENKINS-25075] Weather column should render asynchronously

          Jesse Glick created issue -
          Jesse Glick made changes -
          Link New: This issue is related to JENKINS-19392 [ JENKINS-19392 ]
          Jesse Glick made changes -
          Link New: This issue is related to JENKINS-25074 [ JENKINS-25074 ]
          Jesse Glick made changes -
          Link New: This issue is related to JENKINS-25073 [ JENKINS-25073 ]

          Jesse Glick added a comment -

          Auto refresh makes everything that much worse.

          Jesse Glick added a comment - Auto refresh makes everything that much worse.
          Jesse Glick made changes -
          Link New: This issue is related to JENKINS-19828 [ JENKINS-19828 ]
          Jesse Glick made changes -
          Link New: This issue is related to JENKINS-25078 [ JENKINS-25078 ]

          Jesse Glick added a comment -

          Looked into implementing this. Tricky to render HTML content from existing column.jelly scripts but ought to be possible. (l:renderOnDemand is not suitable since that makes one HTTP request per response, and is insensitive to page activity. Really want ProgressiveRendering, but this does not yet support HTML output, only JSON, meaning that buildHealth.jelly could not be reused.)

          The real trouble is JENKINS-16341: even creating a single ProgressiveRendering per list view render would add a new entry to BoundObjectTable per page load, which would quickly add up to a huge amount of memory consumed by the server if you have lots of active sessions browsing Jenkins repeatedly.

          Jesse Glick added a comment - Looked into implementing this. Tricky to render HTML content from existing column.jelly scripts but ought to be possible. ( l:renderOnDemand is not suitable since that makes one HTTP request per response, and is insensitive to page activity. Really want ProgressiveRendering , but this does not yet support HTML output, only JSON, meaning that buildHealth.jelly could not be reused.) The real trouble is JENKINS-16341 : even creating a single ProgressiveRendering per list view render would add a new entry to BoundObjectTable per page load, which would quickly add up to a huge amount of memory consumed by the server if you have lots of active sessions browsing Jenkins repeatedly.
          Jesse Glick made changes -
          Link New: This issue depends on JENKINS-16341 [ JENKINS-16341 ]
          Jesse Glick made changes -
          Link Original: This issue depends on JENKINS-16341 [ JENKINS-16341 ]

            Unassigned Unassigned
            jglick Jesse Glick
            Votes:
            3 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: