Articles of sysctl

如何重置sysctl到它的操作系统的默认值?

我无法在sysctl的手册页中find答案。 我的sysctl.conf文件仍然处于默认状态,我正在testing几个值并通过sysctl -p newsettings.conf加载新的设置。 我虽然重新设置sysctl -p (这意味着它从sysctl.conf读取值)就足够了。 但是一个快速的sysctl -a | grep domain sysctl -a | grep domain显示仍然有旧的设置。 有任何想法吗?

为什么要在FreeBSD中更改net.inet.tcp.tcbhashsize?

在几乎每个FreeBSDnetworking调优文档中,我都可以find: # /boot/loader.conf net.inet.tcp.tcbhashsize=4096 这通常与一些无用的语句,如“TCP控制块散列表调整”或“将其设置为合理的值”配对。 man 4 tcp也没有太大的帮助: 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). 我能find的唯一一个涉及这个神秘事物的文档是传输层下优化FreeBSD IP和TCP堆栈中的协议控制块查找小节,但其描述更多地是关于使用它的潜在瓶颈。 它似乎绑定到匹配新的TCP段到他们的侦听套接字,但我不知道如何。 什么是TCP控制块用于? 你为什么要设置其散列大小为4096或任何其他特定的数字?

Postgresql性能 – 调整SHMMAX和SHMALL

我已经阅读了关于提高postgres性能的在线内容,但SHMMAX和SHMALL的“正确”值仍然没有。 共识似乎是SHMMAX = total_memory / 4和SHMALL = total_memory / 2是安全的起始值。 但是,SHMALL可以用页面或字节来衡量,而且我也找不到关于在Ubuntu上使用哪些信息。 Ubuntu(或更一般的Debian)使用SHMALL的页面或字节吗?

使用特权Docker容器进行内核调优

我正在构build一个容器来调整负载平衡器的内核设置。 我更愿意使用单个特权容器将这些更改部署到映像中的主机上。 例如: docker run –rm –privileged ubuntu:latest sysctl -w net.core.somaxconn=65535 在testing中,更改只对那个容器起作用。 我的印象是,一个完全特权的容器改变/ 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 这是多么特权容器应该工作? 我只是在做一些愚蠢的事情? 什么是做出持久改变的最好方法? 版本信息: Client version: 1.4.1 Client API version: 1.16 Go […]

当sysctl tcp_retries1设置为3时,TCP数据包被重新传输7次 – 为什么?

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 […]

Linuxnetworking端口耗尽

我已经做了尽可能多的研究,而不用在内核源代码中进行挖掘。 关于这个问题似乎有大量的虚假信息/不正确的信息,所以我希望这个答案为我和其他人一劳永逸。 严格的讲IPv4,实际上是端口耗尽的可能吗? 让我解释: 貌似有65535个端口可供使用。 0不可用。 我已经读过,端口耗尽需要(src ip,src端口,dst ip,dst端口)元组是唯一的。 要清楚,并假设我可以通过sysctl net.ipv4.ip_local_port_range设置使用100%的临时端口 这就是问题:这是如何工作的? 我可以从127.0.0.1:(x)到127.0.0.1:80有65k连接 我可以从127.0.0.1:(x)到127.0.0.1:555有65k连接 基本上再一次,问题是(srcip,srcport,dstip,dstport)必须是唯一的,正确的? 我无法打开从 IP“A”到IP“B”,端口“N” 同样,一个IP不能打开超过65k连接到我的web服务器在xxxx:80,但是我可以支持多于65k整体,只要他们来自不同的来源IP ? 最后,我对输出的临时端口和正在监听的input端口有些困惑。 我意识到一旦build立连接,连接的每一边都是对等的,但在此之前: 例如,如果确实(srcip,srcport,dstip,dstport)元组必须是唯一的,为什么如果我启用,例如 net.ipv4.ip_local_port_range = 1024 65535 它允许使用从1024-65535的短暂端口,如果我的服务绑定在端口3306上(例如mySQL),它们有时会因端口正在使用而无法启动。 这与这个事实有关:(这是我要求validation的一个陈述): (srcip,srcport,dstip,dstport)对端口范围1-65535的每个连接都是唯一的(不注意操作系统使用临时端口) 但是,对于要绑定的套接字,可以将其视为(srcip,srcport,*,*)。 或者另一种方式来说明,是否IP不能以任何理由使用该端口绑定? 我可以validation上述行为,即我使用上面的确切的sysctl行,因为它我把mySQL移动到一个低于1024的端口,因为它会偶尔和非常随机地重新启动,因为假设操作系统使用该端口(3306)为一个短暂的港口。

在重新启动时使sysfs参数持续存在的build议

我正在尝试对通过sysfs虚拟文件系统公开的Linux系统运行时参数进行大的更改 。 维护这些参数的最有效方法是什么,以便在RHEL / CentOS风格的系统上重启时保持这些参数? 这只是将命令转储到/etc/rc.local的情况吗? 是否有一个非常适合于此的初始化脚本? 我也从configurationpipe理的angular度考虑标准化。 是否有一个干净的sysfs相当于sysctl ?

ulimit,launchctl,sysctl之间的区别?

在pipe理操作系统(特别是OSX)的限制时,这三个工具的function和历史之间有什么区别和重叠: ulimit launchctl , launchd sysctl 我发现它调整OSX上的最大进程和打开文件限制令人困惑。 如果通过terminal启动某些进程而不是GUI,那么这很重要吗? 可能相关: OS X(10.5)中指定的默认限制在哪里? ulimit -n和/ proc / sys / fs / file-max如何不同?

使用Puppet设置sysctl.conf参数

这在CFEngine中是一件轻而易举的事情 ……但是我现在在一个Puppet环境中 ,需要能够分配/确保/检查某些sysctl.confvariables。 在CFEngine世界中,我可以简单地检查configuration文件中的特定行……我已经find了Puppet wiki上的sysctl模块的一个小引用,并且在github上看到了一个项目,它可以做我想做的事情。 但是都没有真正的文件logging。 我只是寻找一种方式来编辑像net.core.rmem_default和net.core.wmem_max两个值。 在github上托pipe的项目格式中,init.pp清单中的configuration应该如下所示: class sysctl { sysctl::value { "net.core.rmem_default": value => "9000000"; "net.core.wmem_default": value => "9000000"; "net.core.rmem_max": value => "16777216"; "net.core.wmem_max": value => "16777216"; } } 通过论坛和邮件列表,似乎对Puppet插件和模块之间的差异感到困惑。 这些条款几乎可以互换使用…我最终需要在我的客户端启用pluginsync,以便通过一些毛茸茸的错误。 我以为这是一个模块! 目前的客户端错误: info: Loading downloaded plugin /var/lib/puppet/lib/puppet/type/sysctl.rb info: Loading downloaded plugin /var/lib/puppet/lib/puppet/provider/sysctl/parsed.rb err: Could not retrieve catalog from remote server: Error 400 […]

哪里是正确的地方设置net.netfilter.nf_conntrack_buckets?

我目前正试图在启动时设置net.netfilter.nf_conntrack_buckets。 我最初认为这可以通过sysctl.conf完成,但net.netfilter.nf_conntrack_buckets(和其他net.netfilterconfiguration)根本没有应用。 将sysctl -p添加到rc.local中,除了net.netfilter.nf_conntrack_buckets之外,允许应用所有的net.netfilterconfiguration。 我还会注意到,试图从terminal使用sysctl -w来设置它会导致'错误:密钥的权限被拒绝'net.netfilter.nf_conntrack_buckets'' # This should be applied at boot net.netfilter.nf_conntrack_max=1966080 net.netfilter.nf_conntrack_buckets=245760 哪里是正确的地方做这个?