Sidekiq 无法连接到数据库?

Sidekiq can't connect to database?

我在 /etc/hosts 文件中将 "mariadb" 设置为 127.0.0.1,sidekiq 偶尔会抛出如下错误:

Mysql2::Error::ConnectionError: Unknown MySQL server host 'mariadb' (16)

虚拟机负载不高或类似情况。

稍后编辑:似乎其他 gem 也无法解析主机:

WARN -- : Unable to record event with remote Sentry server (Errno::EBUSY - Failed to open TCP connection to XXXX.ingest.sentry.io:443 (Device or resource busy - getaddrinfo)):

有人知道为什么会发生这种情况吗?

几周前我已经解决了这个问题,但想在发布答案之前确定一下。

我仍然无法弄清楚这个问题的机制,但它是由 fail2ban 引起的。

我把它 运行 放在一个容器中,轮询 httpd 日志并阻止大量爬虫程序抓取我的网站。

我还增加了最大文件处理程序和 inotify 处理程序。

fs.file-max = 131070
fs.inotify.max_user_watches = 65536

一旦我摆脱了 fail2ban 并增加了 inotify 处理程序,错误就消失了。

显然,fail2ban 正因此进入“请勿触摸”列表,我们在应用层推出了一个 404/403/500 处理程序,将未知 IP 推送到 Cloudflare。

虽然这可能是一个边缘案例,但我将其留在此处,希望它能在某些时候对某人有所帮助。