我在红帽机器上。我正在通过 sysctl 更改 max_map_count 的值:
# sysctl vm.max_map_count
vm.max_map_count = 65530
# sysctl -w vm.max_map_count=655300
vm.max_map_count = 655300
# sysctl vm.max_map_count
vm.max_map_count = 655300
Run Code Online (Sandbox Code Playgroud)
然后我将该值写入,/etc/sysctl.conf以便它能够持续重新启动。
我这样做是为了解决特定长期服务的 munmap 需求。据我所知,修改 sysctl 值对于系统来说是立即的。我的问题是:我是否需要重新启动单个服务才能使此更新的设置对特定正在运行的进程生效,或者更新的计数限制是否立即应用于正在运行的进程?
我一直在测试 Linux 4.18.16-200.fc28.x86_64。根据free -h.
我有vm.dirty*sysctl 的默认值。 dirty_background_ratio是 10,现在dirty_ratio是 20。根据我读过的所有内容,我希望 Linux 在达到 RAM 的 10% 时开始写出脏缓存:0.77G。当脏缓存达到 RAM 的 20%:1.54G 时,缓冲的 write() 调用应该阻塞。
我跑过去dd if=/dev/zero of=~/test bs=1M count=2000看着dirty田野atop。当dd命令运行时,该dirty值稳定在 0.5G 左右。这明显低于脏背景阈值(0.77G)!怎么会这样?我错过了什么?
dirty_expire_centisecs是 3000,所以我认为这不是原因。我什至尝试降低dirty_expire_centisecs到 100 和dirty_writeback_centisecs10,看看这是否是限制dirty。这并没有改变结果。
作为调查的一部分,我最初写下了这些观察结果:为什么在 2013 年报告了“USB 记忆棒停顿”问题?为什么现有的“No-I/O 脏节流”代码没有解决这个问题?
我知道在两个阈值之间的中间 - 15% = 1.155G - write() 调用开始在曲线上受到限制(延迟)。但是在这个天花板之下时不会增加延迟;允许生成脏页的进程“自由运行”。
据我了解,节流旨在将脏缓存保持在 15% 或以上,并防止达到 20% 的硬限制。它并不为每种情况提供保证。但我正在用一个dd命令测试一个简单的案例;我认为它应该简单地限制 write() 调用以匹配设备实现的写出速度。 …
我尝试查看/proc/sys/vm/max_map_countvm.max_map_count=16777216文件,它显示“空”,我在etc/sysctl.config中添加了一行,并想查看是否应用了更改。
我有一定的问题,需要放大它来修复应用程序中的内存崩溃,但它们仍然会发生,所以我想把这个问题划掉。
我正在使用 ab 对 Apache 进行一些性能测试。在我们的案例中,Apache 仅作为负载平衡器在两个 Liferay 服务器之间平衡负载。
最初,我对 1000 个请求和 100 个并发请求进行了测试。测试进行得很顺利。
但是当我用 1000 个请求对 500 个并发用户执行测试时,测试失败了。
$ ab -c 500 -n 1000 http://103.X.X.X/web/guest/statistics
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation,
Benchmarking (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
apr_socket_recv: Connection timed out (110)
Total of 386 requests completed
Run Code Online (Sandbox Code Playgroud)
在Kernel中可以看到如下消息。
May 13 14:21:15 www kernel: possible SYN flooding on port …Run Code Online (Sandbox Code Playgroud) 我在 OpenWRT 15.05.1 上运行路由器,我确实注意到,它不会在 IP 地址更改、重新启动或以太网链路状态更改时发送免费 ARP 数据包。
与此同时,我发现有一个名为arp_notifyin的选项/etc/sysctl.conf,但由于某种原因它不起作用。
cat /proc/sys/net/ipv4/conf/br-lan/arp_notify现在返回1,所以我想应该启用它,但在上述情况之一上它仍然不会发送免费 ARP 数据包。
我还停止了防火墙/etc/init.d/firewall stop以防止出现任何问题。
该命令arping -A -I br-lan x.x.x.x正确发送它,因此通常可以创建并发送这样的数据包。
在网络设置更改、重新启动或链路状态更改时,OpenWRT 系统上的 Linux 内核发送免费 ARP 数据包需要什么?
(我可能可以通过热插拔系统找到一个脚本化的解决方案,但我想知道为什么它不能按照arp_notify我认为应该的方式工作)
我们有一台 Linux 机器(Redhat 6)
当我们打印所有参数时,/etc/sysctl.conf我们只看到大约 20 个,但是当我们执行时,sysctl -a我们看到 200 多个。
那么从哪里sysctl -a打印所有这些参数?
或者例如当我们做
sysctl -w variable=value
Run Code Online (Sandbox Code Playgroud)
如何知道变量应该保存在哪里?
如何知道每个参数是动态的还是静态的?
我知道有*.conf文件/usr/lib/sysctl.d和/或/etc/sysctl.d文件夹准备在启动时建立内核参数。但它们是通用的;我想要的是net.ipv4.icmp_echo_ignore_all根据所在的用户自定义其中一些参数(例如,),但我想要每个用户的内核参数。有可能吗,或者我所说的完全是愚蠢的?
是否可以使用内核命令行(在 中可见的那些)设置 Linux 内核sysctl设置(那些通常在 中设置)?/etc/sysctl.d/proc/cmdline
(使用grub配置文件/etc/default/grub变量GRUB_CMDLINE_LINUX="..."。)
我一直/proc/sys/kernel/panic设置为0. 查看kernel.org中此选项的描述,我们可以看到:
恐慌:
此文件中的值表示内核在出现紧急情况时重新启动之前等待的秒数。使用软件看门狗时,推荐设置为60。
从这里可以得出结论,0重启前等待 0 秒 - 立即重启。
但procMAN 页面声明如下:
/proc/sys/kernel/panic
该文件提供对内核变量 panic_timeout 的读/写访问。如果这是零,内核将在恐慌中循环;如果非零,则表示内核应该自动执行?在此秒数后启动。当您使用软件看门狗设备驱动程序时,建议设置为 60。
这里的0意思是对映的东西 - 永远不要重启。
那么为什么这样一个值得信赖的来源会提供如此误导性的信息呢?或者 MAN 页面可能不准确?
PS 只是从一panic_on_oops节中的提示(如果你碰巧读到这个)你可以猜到 MAN 页面是正确的。或者,如果您在技术上足够熟练,可以研究内核源代码中的某些内容。
我正在使用内核 4.14.5 运行 Fedora 27,并且有一个/etc/sysctl.conf在启动时没有加载的问题。
如果我运行:
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
启动后,我的设置被加载,一切正常。
我需要做什么来启用加载/etc/sysctl.conf或加载它的替代方法是什么?
sysctl ×10
linux ×6
linux-kernel ×2
apache-bench ×1
arp ×1
atop ×1
benchmark ×1
cache ×1
command-line ×1
fedora ×1
grub2 ×1
kernel ×1
kernel-panic ×1
networking ×1
parameter ×1
proc ×1
rhel ×1
security ×1