在/proc我有两个 nf_conntrack_max 条目:
/proc/sys/net/netfilter/nf_conntrack_max /proc/sys/net/nf_conntrack_max
似乎指向相同的值,因为改变一个也会改变另一个。将这两个设置为/etc/sysctl.conf:
net.netfilter.nf_conntrack_max=65528 net.ipv4.netfilter.ip_conntrack_max=65535
重新启动后该值仍为 32764,因此更改不起作用。有没有人遇到过这个?我的猜测是在加载相关模块之前应用这些值,但希望有人已经知道解决方案。
我正在构建一个容器来调整负载均衡器的内核设置。我更喜欢使用单个特权容器将这些更改部署到映像中的主机。例如:
docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
Run Code Online (Sandbox Code Playgroud)
在测试中,更改生效但仅适用于该容器。我的印象是,使用完全特权的容器更改 /proc 实际上会更改底层操作系统。
$docker run --rm --privileged ubuntu:latest \
sysctl -w net.core.somaxconn=65535
net.core.somaxconn = 65535
$ docker run --rm --privileged ubuntu:latest \
/bin/bash -c "sysctl -a | grep somaxconn"
net.core.somaxconn = 128
Run Code Online (Sandbox Code Playgroud)
这是特权容器应该如何工作吗?
我只是在做一些愚蠢的事情吗?
做出持久改变的最佳方法是什么?
版本信息:
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Run Code Online (Sandbox Code Playgroud)
挂载 /proc …
我尝试net.ipv4.netfilter.ip_conntrack_max通过编辑 /etc/sysctl.conf进行更改
net.ipv4.netfilter.ip_conntrack_max = 65535
Run Code Online (Sandbox Code Playgroud)
和 sysctl -p
但我收到错误:
sysctl: 无法统计 /proc/sys/net/ipv4/netfilter/ip_conntrack_max: 没有那个文件或目录
CentOS 7
我已经阅读了网上关于提高 postgres 性能的所有内容,但是 SHMMAX 和 SHMALL 的“正确”值仍然让我难以理解。
共识似乎是 SHMMAX = total_memory/4 和 SHMALL = total_memory/2 是安全的起始值。
但是,SHMALL 可以以页数或字节数来衡量,我找不到任何有关在 Ubuntu 上使用的信息。
Ubuntu(或更普遍的 Debian)是否为 SHMALL 使用页面或字节?
在rmem_maxLinux的设置限定了接收UDP数据包缓冲区的大小。
当流量变得太忙时,数据包丢失开始发生。
我制作了一个图表,显示数据包丢失如何根据传入带宽增加。
(我使用IPerf在两个 VM 实例之间生成 UDP 流量)。
不同的颜色代表不同的rmem_max值:

如您所见,设置rmem_max为26214400(深蓝色)会导致丢包比较小的值更早。Linux 的默认值是131071(深绿色)看起来很合理。
在这些情况下,为什么JBoss 文档建议设置rmem_max为26214400?
是因为 UDP 流量预计高于 350 MB/秒吗?无论如何,我认为任何东西都不会超过 1% 的丢包率...
我错过了什么?
详细信息:我sysctl -w net.core.rmem_max=131071(例如)在两个节点上都使用过,并在作为 serveriperf -s -u -P 0 -i 1 -p 5001 -f M和另一个作为 client 使用iperf -c 172.29.157.3 -u -P 1 -i 1 -p 5001 -f M -b 300M -t 5 -d -L 5001 -T …
Ubuntu 12.04
我试图更好地了解 TCP 在未收到目的地收到的确认时将尝试重新传输数据包的次数。阅读tcp 手册页后,似乎很明显这是由 sysctl tcp_retries1 控制的:
tcp_retries1 (integer; default: 3)
The number of times TCP will attempt to retransmit a packet on
an established connection normally, without the extra effort of
getting the network layers involved. Once we exceed this number
of retransmits, we first have the network layer update the route
if possible before each new retransmit. The default is the RFC
specified minimum of 3.
Run Code Online (Sandbox Code Playgroud)
我的系统设置为默认值 3:
# cat /proc/sys/net/ipv4/tcp_retries1
3
Run Code Online (Sandbox Code Playgroud)
为了对此进行测试,我通过 ssh …
将 tcp_orphan_retries 设置为 0 是否意味着重试没有限制,还是意味着它根本不会重试?
在几乎每个 FreeBSD 网络调优文档中,我都能找到:
# /boot/loader.conf
net.inet.tcp.tcbhashsize=4096
Run Code Online (Sandbox Code Playgroud)
这通常与一些无用的语句配对,例如“TCP 控制块哈希表调整”或“将此设置为合理的值”。man 4 tcp也没有多大帮助:
Run Code Online (Sandbox Code Playgroud)tcbhashsize Size of the TCP control-block hash table (read-only). This may be tuned using the kernel option TCBHASHSIZE or by setting net.inet.tcp.tcbhashsize in the loader(8).
我能找到的唯一涉及这个神秘事物的文档是优化 FreeBSD IP 和 TCP 堆栈中传输层下的协议控制块查找小节,但它的描述更多地是关于使用它的潜在瓶颈。这似乎与将新的 TCP 段与它们的侦听套接字匹配有关,但我不确定如何。
TCP 控制块究竟是做什么用的?为什么要将其哈希大小设置为 4096 或任何其他特定数字?
sysctl.conf狮子上的文件在什么位置?在 Snow Leopard 中,它位于/etc/sysctl.conf但现在该文件夹不再包含它。在聚光灯下搜索文件不会产生任何结果。
共享内存设置是否已移至不同的 conf 文件?它叫什么名字?
编辑
我正在尝试修改机器的内核共享内存设置。当我没有sysctl.conf在正确的位置找到文件时,我使用推荐的设置创建了自己的文件并将其放入/etc目录中。但是运行sysctl -a仍然显示旧的内存设置已经到位。
如何在安装 Lion 时修改这些设置?
在典型的 Linux 机器上,您可以通过修改位于 的文件来更改内核配置/proc/*。
例如,对于accept_dad特定网络接口(例如eth0)的 IPv6 参数,您需要修改以下文件:
/proc/sys/net/ipv6/conf/eth0/accept_dad
Run Code Online (Sandbox Code Playgroud)
但是,正如我最近发现的,有一个广泛传播的工具,sysctl它具有相同的目的,并且工作原理如下:
sysctl -w net.ipv6.conf.eth0.accept_dad=1
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们什么时候应该使用哪种工具?我的直觉告诉我,如果您知道自己在做什么,则应该直接写入文件,但是,如果您想要验证而不需要什么,则应该使用sysctl.
由于sysctl是我们可以直接控制的东西的另一层,我认为通过使用它,我们将自己暴露在潜在的错误中,而这些错误是通过直接写入文件来避免的。
sysctl ×10
linux ×5
networking ×2
tcp ×2
centos7 ×1
debian ×1
docker ×1
freebsd ×1
iptables ×1
kernel ×1
mac-osx ×1
osx-lion ×1
packetloss ×1
postgresql ×1
proc ×1
shmmax ×1
su ×1
ubuntu ×1
ubuntu-12.04 ×1
ubuntu-9.10 ×1
udp ×1