AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-142686

AnyDev's questions

Martin Hope
AnyDev
Asked: 2023-05-26 15:44:50 +0800 CST

在具有多个 LXC 的环境中启动服务时出现“错误:打开的文件太多”

  • 12

环境:

我使用 CentOS-7 作为管理程序在libvirt. 每个容器都运行 CentOS-7 的最小安装,并减少了 FreePBX(Asterisk、Apache、MySQL + 位)。

症状:

有 16 个容器运行没有任何问题。当我再启动一个时它确实启动了,但在第 17 个容器启动后我无法systemctl start/restart/stop <anything>在任何容器中执行:

[root@test-lxc ~]# systemctl restart dnsmasq
Error: Too many open files

诊断:

systemctl restart blabla当第 17 个 LXC 正在运行并且出现故障时,将完成以下诊断和计数:

我可以通过 ssh 进入任何 LXC 并运行最基本的命令,例如 ls 等。我怀疑这个限制在某种程度上只影响了systemd.

我试图了解我在哪里/为什么达到极限。

[root@lxc-hypervisor]# sysctl fs.file-nr
fs.file-nr = 29616      0       12988463

那没有被调整,这正是默认安装发生的事情。与上述最大(最后)值相同 = 12988463 由管理程序报告,也在每个 LXC 内部报告。每个 LXC 中也报告了非常相似的第一个值,略低于 30000。

当我尝试计算每个 LXC 内所有进程的文件描述符时,我在每个 LXC 中得到的顺序为 400 ~ 500。

for pid in $( ls /proc/ | grep -E -e "^[0-9][0-9]*\$" ); do
    ls -l /proc/${pid}/fd/ 2> /dev/null | wc -l
done

如果没有管理程序本身,总和约为 9000 (9k)。当我在管理程序上运行它时,我通常会得到可疑的接近值,刚好超过 10000,例如 10005。

问题:

Q1。限制设置或继承自哪里?

Q2。为什么这个限制会影响systemctl start/stop/restart blah命令,但我仍然可以通过 ssh 进入 LXC,运行命令,例如带有循环的 bash 脚本,尽管是 root 用户。

Q3. 如何调整限制以允许运行更多 LXC。据我所知,RAM 和其他资源不是限制。

我确实阅读了很多关于文件描述符限制主题的文章和答案,但我没有看到我的系统在哪里达到了限制。

也欢迎任何其他相关信息。

linux
  • 1 个回答
  • 225 Views
Martin Hope
AnyDev
Asked: 2018-09-12 07:18:41 +0800 CST

如何在 LXC 下仅将 ntpd 作为服务器运行,而不调整本地机器时间

  • 2

我需要将设备指向我在 LXC 中运行的 CentOS-7 服务器同步它们的时钟。在我试图ntpd从ntp包中使用的服务器上,但对其他产品开放。这个问题是关于在服务器上设置ntpd或等效的。

到目前为止,我试过这个/etc/ntp.conf

driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict ::1

server 127.127.1.1 iburst
fudge  127.127.1.1 stratum 8

disable monitor

这里有两个问题。

  1. ntpd记录后终止cap_set_proc() failed to drop root privileges: Operation not permitted
  2. ntpd正在尝试调整当地时间。它失败了,但它会尝试。如果这是唯一的问题并且我在日志中有错误消息,我可以接受。

/var/log/messages尝试启动 ntpd 导致的完整输出:

systemd: Starting Network Time Service...
ntpd[20154]: ntpd [email protected] Wed Apr 12 21:24:06 UTC 2017 (1)
ntpd[20155]: proto: precision = 0.120 usec
ntpd[20155]: ntp_adjtime() failed: Operation not permitted
systemd: Started Network Time Service.
ntpd[20155]: 0.0.0.0 c01d 0d kern kernel time sync enabled
ntpd[20155]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
ntpd[20155]: Listen and drop on 1 v6wildcard :: UDP 123
ntpd[20155]: Listen normally on 2 lo 127.0.0.1 UDP 123
ntpd[20155]: Listen normally on 3 eth0 hidden:A.B.C.D UDP 123
ntpd[20155]: Listen normally on 4 tun0 hidden:E.F.G.H UDP 123
ntpd[20155]: Listening on routing socket on fd #21 for interface updates
ntpd[20155]: 0.0.0.0 c016 06 restart
ntpd[20155]: ntp_adjtime() failed: Operation not permitted
ntpd[20155]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
ntpd[20155]: 0.0.0.0 c011 01 freq_not_set
ntpd[20155]: cap_set_proc() failed to drop root privileges: Operation not permitted
systemd: ntpd.service: main process exited, code=exited, status=255/n/a
systemd: Unit ntpd.service entered failed state.
systemd: ntpd.service failed.
ntp lxc
  • 3 个回答
  • 3640 Views
Martin Hope
AnyDev
Asked: 2018-08-09 08:34:23 +0800 CST

nf_conntrack_sip 有时不起作用,重新启动 iptables 通常会修复它

  • 2

我正在尝试在运行 Asterisk 的盒子上使用 nf_conntrack_sip,也就是说,不为另一个 VoIP 盒子路由流量。安装程序一直有效,直到我重新启动。重新启动后 nf_conntrack_sip 几乎总是停止工作并且媒体流量被丢弃。

conntrack --dump | grep -E 'sip|helper'
# No output matching 'sip' nor 'helper' while a call is in progress (albeit no audio)

iptables 规则已正确加载,由iptables-save.

然后我做systemctl restart iptables了 9/10 次修复它。如果没有,那么我重新启动重复 iptables 重新启动。

conntrack --dump | grep -E 'sip|helper'
conntrack v1.4.4 (conntrack-tools): 9 flow entries have been shown.
udp      17 3597 src=10.7.0.38 dst=10.47.1.11 sport=5063 dport=5060 src=10.47.1.11 dst=10.7.0.38 sport=5060 dport=5063 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 helper=sip use=2

简单地重新加载规则iptables-restore < /etc/sysconfig/iptables并没有帮助。我怀疑卸载/加载 conntrack 或某些模块可以解决问题。

有时它确实在启动时起作用,但非常罕见。星号快速启动。给它更多时间“完成开始的事情”并没有帮助。

更新:在 nf_conntrack_sip 按预期工作时重新启动 iptables,很少会破坏它。

设置:

更新:最初该问题被描述为发生在 VM 上,但从那以后我重新安装到真实硬件(i5-6500 CPU @ 3.20GHz 和 8Gb RAM)上,仍然出现完全相同的问题。所有与初始 VM 相同的包(相同的配置脚本)。

操作系统是 CentOS-7.4 Minimal + 更新,内核 3.10.0-693.21.1.el7.x86_64。它都是从 RPM 安装的,没有自定义内核或模块。更新:我还在yum update2018 年 8 月 10 日对 CentOS 提供的最新稳定软件包和内核做了。问题仍然存在。

我做了yum autoremove firewalld和yum install iptables-services。

差异到/etc/sysconfig/iptables-config(其他值是 RPM 的默认值)

-IPTABLES_MODULES=""
+IPTABLES_MODULES="nf_conntrack_sip"

添加文件/etc/modprobe.d/nf_conntrack.conf:

options nf_conntrack nf_conntrack_helper=0

整个/etc/sysconfig/iptables非常简单:

*raw
-A PREROUTING -p udp --dport 5060 -j CT --helper sip
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 5060 -j ACCEPT
-A INPUT -j LOG --log-level 7 --log-prefix "REJECT in filter.INPUT:"
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

更新:设置模块选项options nf_conntrack nf_conntrack_helper=1而不使用 iptables 规则... -j CT --helper sip并不能修复它,并且行为仍然是不确定的。

与问题无关,仅确认数据包被丢弃,而不是 NAT 问题,/etc/rsyslog.d/kern-debug.conf

kern.=debug /var/log/kernel-debug

使用拨入 PBX 并获取保留音乐的 Cisco SPA504G 电话进行测试。不要试图用媒体做任何复杂的事情。SIP 信令和媒体使用相同的 IPv4 地址进行交换。测试呼叫仅在电话和 PBX 之间进行。没有其他参与方。

我尝试诊断它:

我制作了一个简短的脚本,试图通过重新启动 iptables 来捕获修复前后各种事物的状态,以便通过diff. 剧本:

for f in $( find /proc/sys/net/netfilter -type f ); do
  echo f=${f}
  cat "${f}"
done

echo cat /sys/module/nf_conntrack/parameters/*
cat /sys/module/nf_conntrack/parameters/*

echo ls /sys/module/nf_conntrack/holders/
ls /sys/module/nf_conntrack/holders/

echo cat /sys/module/nf_conntrack_sip/parameters/*
cat /sys/module/nf_conntrack_sip/parameters/*
echo ls /sys/module/nf_conntrack_sip/holders/
ls /sys/module/nf_conntrack_sip/holders/

echo ls /sys/module/ip*/holders/
ls /sys/module/{ip,nf_}*/holders/

echo sysctl -a
sysctl -a

echo lsmod
lsmod

echo iptables-save
iptables-save

我唯一注意到的是,经常模块nf_conntrack_netlink在启动后被列为已加载,但存在问题。有时它lsmod在启动后没有列出,但仍然存在问题。重新启动 iptables 后,据我所知,它从未被列为已加载。我怀疑它是不相关的,因为它被加载和问题出现之间没有直接联系。

iptables sip
  • 1 个回答
  • 4935 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve