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 added a comment -

          Auto refresh makes everything that much worse.

          Jesse Glick added a comment - Auto refresh makes everything that much worse.

          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 added a comment -

          Depends on more tractable special case JENKINS-25081.

          Jesse Glick added a comment - Depends on more tractable special case JENKINS-25081 .

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

              Created:
              Updated: