### Description

The health API response can become a few MBs (2-3MB if 50K indices are affected).

In less extreme situations the response can be in the 10s/100s of KB. 

It might be worthwhile looking into chunking its response (this might provide clients with a better experience too)
server/src/internalClusterTest/java/org/elasticsearch/discovery/StableMasterDisruptionIT.java
.build()
        );
        ensureStableCluster(3);
        for (int i = 0; i < nullTransitionsThreshold + 1; i++) {
            final String masterNode = masterNodes.get(0);
            
            SingleNodeDisruption masterNodeDisruption = new LongGCDisruption(random(), masterNode);
            final CountDownLatch dataNodeMasterSteppedDown = new CountDownLatch(2);
            internalCluster().getInstance(ClusterService.class, dataNodes.get(0)).addListener(event -> {
                if (event.state().nodes().getMasterNodeId() == null) {
                    dataNodeMasterSteppedDown.countDown();
                }
            });
            internalCluster().getInstance(ClusterService.class, dataNodes.get(1)).addListener(event -> {
                if (event.state().nodes().getMasterNodeId() == null) {
                    dataNodeMasterSteppedDown.countDown();
                }
            });
            internalCluster().clearDisruptionScheme();
            internalCluster().setDisruptionScheme(masterNodeDisruption);
            logger.info("--> freezing node [{}]", masterNode);
            masterNodeDisruption.startDisrupting();
            dataNodeMasterSteppedDown.await(30, TimeUnit.SECONDS);
            
            logger.info("--> unfreezing node [{}]", masterNode);
            masterNodeDisruption.stopDisrupting();
            ensureStableCluster(3, TimeValue.timeValueSeconds(30), false, randomFrom(dataNodes));
        }
        assertGreenMasterStability(internalCluster().client(randomFrom(dataNodes)));
    }