# Grootmade@app-node - 11：资源暂时不可用

**URL:** https://meta.discourse.org/t/grootmade-app-node-11-resource-temporarily-unavailable/410764
**Category:** Self-hosting
**Created:** [2026年八月24日 06:24 UTC](https://meta.discourse.org/t/grootmade-app-node-11-resource-temporarily-unavailable/410764 "2026-08-24T06:24:11Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![GrootMade](https://avatars.discourse-cdn.com/v4/letter/g/59ef9b/32.png) [@GrootMade](https://meta.discourse.org/u/GrootMade)
#### Post date: [2026年八月24日 06:24 UTC](https://meta.discourse.org/t/grootmade-app-node-11-resource-temporarily-unavailable/410764/1 "2026-08-24T06:24:11Z")

</div>

大家好，

我在生产环境的 Discourse 应用节点上遇到了一个间歇性的连接中断问题，需要系统管理员或内核网络专家的宝贵建议。

在流量高峰期间，Nginx 开始返回 `502 Bad Gateway`，并且断开的连接在上游服务中产生连锁反应。起初，我以为是标准的 Postgres/Redis 连接池限制，但检查网络堆栈后发现，问题指向套接字耗尽和 conntrack 表饱和。

### 我已验证的内容

- `limits.conf` 中的限制已提升至 `65535`，并已验证正在运行的进程。
- Puma/Sidekiq 队列正常，CPU 使用率徘徊在 ~45% 左右。
- 出站 API 调用和入站用户握手间歇性地挂起 10–30 秒。

以下是我在最后一次流量高峰后立即从终端获取的原始历史记录，显示了我检查的内容以及抛出的错误：

```bash
grootmade@app-node-01:~$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
      4 LAST_ACK
     12 LISTEN
     48 FIN_WAIT2
    312 ESTABLISHED
   8940 TIME_WAIT

grootmade@app-node-01:~$ sysctl net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_reuse = 2

grootmade@app-node-01:~$ sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_count = 262140
net.netfilter.nf_conntrack_max = 262144

grootmade@app-node-01:~$ dmesg -T | grep -i conntrack | tail -n 5
[Sun Aug 23 14:10:02 2026] nf_conntrack: nf_conntrack: table full, dropping packet
[Sun Aug 23 14:10:05 2026] nf_conntrack: nf_conntrack: table full, dropping packet
[Sun Aug 23 14:10:12 2026] nf_conntrack: nf_conntrack: table full, dropping packet

grootmade@app-node-01:~$ sudo ss -s
Total: 9648
TCP: 9410 (estab 312, closed 8940, orphaned 0, timewait 8940)

grootmade@app-node-01:~$ cat /proc/sys/net/ipv4/ip_local_port_range
32768	60999

grootmade@app-node-01:~$ ulimit -n
65535

grootmade@app-node-01:~$ cat /proc/sys/fs/file-nr
4128	0	65535

grootmade@app-node-01:~$ sudo iptables -L -n -v | grep -i DROP
    0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

grootmade@app-node-01:~$ sudo strace -p 1842 -e trace=connect,bind 2>&1 | head -n 10
connect(14, {sa_family=AF_INET, sin_port=htons(5432), sin_addr=inet_addr("10.0.1.25")}, 16) = -1 EAGAIN (Resource temporarily unavailable)

grootmade@app-node-01:~$ cat /etc/security/limits.d/discourse.conf
discourse soft nofile 65535
discourse hard nofile 65535

grootmade@app-node-01:~$ tail -n 20 /var/log/nginx/error.log | grep "failed"
2026/08/23 14:10:15 [crit] 1842#1842: *49102 connect() to 10.0.1.25:5432 failed (11: Resource temporarily unavailable)

grootmade@app-node-01:~$ history | tail -n 13

```

### 我的问题：

1. 在 16GB 内存的节点上，将 `nf_conntrack_max` 扩展到 `1048576` 时，推荐的内存权衡是多少？

2. 即使设置了 `tcp_tw_reuse = 2`，我们在对 Postgres 进行本地端口绑定时仍会遇到 `EAGAIN`。我们应该扩展 `ip_local_port_range` 还是在 Nginx 上游启用 HTTP 保持连接（keep-alives）？

3. 为内部环回和 VPC 流量添加 `NOTRACK` 原始 iptables 规则是否是一个安全的永久解决方案，还是它会引入容器网络中的隐藏状态问题？

任何建议或经过实战检验的 `sysctl.conf` 代码片段都将不胜感激！

谢谢！

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2026年八月24日 06:41 UTC](https://meta.discourse.org/t/grootmade-app-node-11-resource-temporarily-unavailable/410764/2 "2026-08-24T06:41:26Z")

</div>

现代版本的 Discourse 并不运行 Puma。你当前使用的是哪个版本的 Discourse？这是一个非标准安装吗？
