# Falha no Discourse devido a problema de conexão com PSQL

**URL:** https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245
**Category:** Self-hosting
**Created:** [Março 13, 2024, 11:17pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245 "2024-03-13T23:17:52Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![jimmy0017](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@jimmy0017](https://meta.discourse.org/u/jimmy0017)
#### Post date: [Março 13, 2024, 11:17pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/1 "2024-03-13T23:17:52Z")

</div>

Recebemos repetidamente esta mensagem em nosso fórum. (a cada 3-4 horas). Temos 16 núcleos de CPU e 32 GB de RAM. Não acho que os recursos sejam um problema.

```plaintext
Oops
O software que alimenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.

Informações detalhadas sobre o erro foram registradas e uma notificação automática gerada. Vamos dar uma olhada.

Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, você pode fornecer detalhes adicionais, incluindo etapas para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.

```

O log de produção mostra

```plaintext

app/models/user_auth_token.rb:125:in `lookup'
lib/auth/default_current_user_provider.rb:131:in `current_user'
lib/current_user.rb:35:in `current_user'
app/controllers/application_controller.rb:1047:in `rate_limit_crawlers'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
lib/middleware/anonymous_cache.rb:393:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-silence_logger.rb:27:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:236:in `call'
Erro inesperado no Message Bus : ActiveRecord::ConnectionNotEstablished : falha na conexão com o servidor em "172.17.0.2", porta 5432: FATAL: os slots de conexão restantes são reservados para conexões superusuárias não de replicação

Erro inesperado no Message Bus : ActiveRecord::ConnectionNotEstablished : falha na conexão com o servidor em "172.17.0.2", porta 5432: FATAL: os slots de conexão restantes são reservados para conexões superusuárias não de replicação

Erro inesperado no Message Bus : ActiveRecord::ConnectionNotEstablished : falha na conexão com o servidor em "172.17.0.2", porta 5432: FATAL: os slots de conexão restantes são reservados para conexões superusuárias não de replicação

Erro inesperado no Message Bus : ActiveRecord::ConnectionNotEstablished : falha na conexão com o servidor em "172.17.0.2", porta 5432: FATAL: os slots de conexão restantes são reservados para conexões superusuárias não de replicação

```

Configuramos o seguinte em

```plaintext
UNICORN_WORKERS: 32
UNICORN_SIDEKIQS: 2

```

e para psql

```plaintext
db_shared_buffers: "4096MB"

```

Por favor, me diga o que mais posso fazer para melhorar a configuração e garantir que o servidor não falhe.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Março 14, 2024, 6:50pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/2 "2024-03-14T18:50:28Z")

</div>

Eu daria ao postgres (db\_shared\_buffers) pelo menos 16 GB, senão 20 GB.

Mas você precisa fazer mais conexões ao banco de dados. Não me lembro exatamente como fazer isso.

Acho que é `max_connections` em `/etc/postgresql/postgresql.conf` (dentro do contêiner que está executando o postgres) que você precisa alterar.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [Março 14, 2024, 7:48pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/3 "2024-03-14T19:48:28Z")

</div>

> [@pfaffman](#):
>
> Mas você precisa fazer mais conexões com o banco de dados

Eu também acho. 👍

> [@pfaffman](#):
>
> Eu daria ao postgres (db\_shared\_buffers) pelo menos 16 GB, se não 20

Você tem certeza? Isso parece muito. Veja [PostgreSQL: Documentation: 13: 19.4.&nbsp;Resource Consumption](https://www.postgresql.org/docs/13/runtime-config-resource.html)

> Se você tiver um servidor de banco de dados dedicado com 1 GB ou mais de RAM, um valor inicial razoável para `shared_buffers` é 25% da memória do seu sistema. Existem algumas cargas de trabalho onde configurações ainda maiores para `shared_buffers` são eficazes, mas como o PostgreSQL também depende do cache do sistema operacional, é improvável que uma alocação de mais de 40% da RAM para `shared_buffers` funcione melhor do que uma quantidade menor.

E este não é um servidor de banco de dados dedicado, há 32 processos unicorn nele também.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Março 14, 2024, 8:03pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/4 "2024-03-14T20:03:38Z")

</div>

> [@RGJ](#):
>
> Tem certeza disso? Isso parece muito.

Sempre confio em você em assuntos como este, e pensei que estava citando um conselho que você deu no passado, então, **NÃO** , não tenho certeza. 🤣

Está bem claro que a conexão é o problema e aumentar a RAM para 25% de 32 GB pode ajudar em geral, mas não é a causa do erro.

EDIT:

> [@RGJ](#):
>
> Ignore todos os conselhos que você encontrar na internet e defina para 40-50% da sua memória.

Ha! É exatamente isso que eu lembrava, exceto que parece que eu ia ultrapassar 50%. . .

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [Março 14, 2024, 8:16pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/5 "2024-03-14T20:16:20Z")

</div>

> [@pfaffman](#):
>
> Eu pensei que estava citando um conselho que você tinha dado no passado

Eu me declaro mais ou menos culpado

> [@RGJ](#):
>
> Ignore todos os conselhos que você encontrar na internet e defina-os para 40-50% da sua memória.

Mas isso foi antes… 😉

> [@pfaffman](#):
>
> Está bem claro que as conexões são o problema e aumentar a RAM para 25% de 32GB pode ajudar em geral, mas não é a causa do erro.

💯

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Março 14, 2024, 8:21pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/6 "2024-03-14T20:21:46Z")

</div>

> [@jimmy0017](#):
>
> Configuramos o seguinte em
> 
> ```plaintext
> UNICORN_WORKERS: 32
> UNICORN_SIDEKIQS: 2
> 
> ```

Por quê? Essas são as causas de você ficar sem slots de conexão.

---

<div class="post-metadata">

### Author: ![jimmy0017](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@jimmy0017](https://meta.discourse.org/u/jimmy0017)
#### Post date: [Março 14, 2024, 9:43pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/7 "2024-03-14T21:43:06Z")

</div>

Acredito ter visto em algum lugar que `UNICORN WORKER` deveria ser `2 * CPU`. Então fiz as contas e deu 32. Devo reduzir a escala?

---

<div class="post-metadata">

### Author: ![jimmy0017](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@jimmy0017](https://meta.discourse.org/u/jimmy0017)
#### Post date: [Março 14, 2024, 11:44pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/8 "2024-03-14T23:44:04Z")

</div>

Tentamos alterar a configuração de tempo limite para o PSQL executando `ALTER ROLE discourse SET statement_timeout = '30000';`. E esta consulta é a que ficou bloqueada, uma vez a cada poucas horas.

 ![image](https://global.discourse-cdn.com/meta/original/4X/1/9/3/19375d937819e97bd2e1b11bcf695525e2e1ac9d.png)  
Não sei se você ou mais alguém tem alguma ideia do que aconteceu?

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Março 15, 2024, 12:47am UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/9 "2024-03-15T00:47:30Z")

</div>

> [@jimmy0017](#):
>
> Acredito que vi em algum lugar dizendo que `UNICORN WORKER` deveria ser `2 * CPU`. Então fiz as contas e deu 32. Devo reduzir a escala?

Não, por favor, remova isso e deixe os valores padrão serem aplicados. Este é o caso clássico de otimização prematura.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [Março 17, 2024, 9:50am UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/10 "2024-03-17T09:50:20Z")

</div>

> [@jimmy0017](#):
>
> Tentamos alterar a configuração de tempo limite para o PSQL executando isto `ALTER ROLE discourse SET statement_timeout = '30000';`.

> [@jimmy0017](#):
>
> Não sei se você ou mais alguém tem alguma ideia do que aconteceu?

Sim, você mexeu em coisas que não deveria 😉

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Abril 22, 2025, 8:42pm UTC](https://meta.discourse.org/t/discourse-crash-due-to-psql-connection-issue/299245/11 "2025-04-22T20:42:50Z")

</div>

9 posts foram divididos em um novo tópico: [Recomendação para número de workers: cores × 2?](https://meta.discourse.org/t/recommendation-for-number-of-workers-cores-x-2/363055)
