我在/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。
尽管这可能是一个边缘案例,但我将其留在这里,希望它在某些时候对某人有所帮助。
关于ruby-on-rails - Sidekiq 无法连接数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61918126/