这不是内核参数的重复问题,我已经在我的 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
- 编辑
/etc/default/grub
并更改GRUB_CMDLINE_LINUX=""
为GRUB_CMDLINE_LINUX="noautogroup"
(实际上应该是 GRUB_CMDLINE_LINUX_DEFAULT 但 GRUB_CMDLINE_LINUX_DEFAULT 对我来说不起作用)。 sudo update-grub
- 重新启动并验证结果运行
cat /proc/sys/kernel/sched_autogroup_enabled
,它应该打印0