如何修改内核参数而不导致操作系统出现内核崩溃

如何修改内核参数而不导致操作系统出现内核崩溃

这不是内核参数的重复问题,我已经在我的 ubuntu 14.04 发行版上引起了内核恐慌,试图提高 Nginx 和 postgresql 的性能,我只是想知道如何防止这种情况再次发生,以及根据我的服务器在我的内核配置文件上设置哪些正确的值。

这些是添加到 /etc/sysctl.conf 文件的行:

### NGINX
#
# 16MB per socket - which sounds like a lot, but will virtually never
# consume that much.
#
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# Increase the number of outstanding syn requests allowed.
# c.f. The use of syncookies.
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies = 1

# The maximum number of "backlogged sockets". Default is 128.
net.core.somaxconn = 2048

### POSTGRESQL
kernel.sched_migration_cost_ns = 5000000
kernel.sched_autogroup_enabled = 0

我使用来自 Digital Ocean 的一滴水:

  • 1 核处理器
  • 1 GB 内存
  • 30 GB SSD 磁盘

这是我使用的教程: https://tweaked.io/guide/kernel/

如果一切成功,我将在我的生产 Droplet 上执行更改,正如你所看到的,我的操作系统无法启动,我必须使用恢复 ISO 来使用 Digital Ocean 的控制台恢复我的内核配置。

我做错了什么?提前感谢您的评论。

答案1

这很可能kernel.sched_autogroup_enabled会引起恐慌,看看https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1422016

也可以通过 Grub 配置等方式将参数传递给内核来kernel.sched_autogroup_enabled实现禁用。以下方法对我有用:noautogroup

  1. 编辑/etc/default/grub并更改GRUB_CMDLINE_LINUX=""GRUB_CMDLINE_LINUX="noautogroup"(实际上应该是 GRUB_CMDLINE_LINUX_DEFAULT 但 GRUB_CMDLINE_LINUX_DEFAULT 对我来说不起作用)。
  2. sudo update-grub
  3. 重新启动并验证结果运行cat /proc/sys/kernel/sched_autogroup_enabled,它应该打印0

相关内容