Você precisa definir um tamanho mínimo de pool. Isso garante que essa quantidade de conexões permaneça aberta para o banco de dados, independentemente do uso do pool.
Por padrão (pelo menos para NPGSQL ), o tamanho mínimo é 0, portanto, se a conexão não for usada por um tempo, ela será fechada.
Em seu teste, você faz uma chamada a cada 5 segundos, o que não é muito, e o pool pode decidir fechar a conexão não utilizada. De acordo com o documento, deve mantê-lo aberto por 300 segundos, não apenas 15