systemd资源管理(具体案例:mysql)

systemd资源管理(具体案例:mysql)

我想弄清楚 systemd 中的资源管理是如何工作的。

为了弄清楚我在哪里以及如何到达那里,我应该首先解释我的情况:

将 mysql-db 从 ubuntu 14.04 迁移到 16.04 后,我必须处理 systemd。这不是我第一次,直到今天都没问题。在 16.04 上,我注意到 mysql 启动期间的日志条目:

Changed limits: max_open_files: 1024 (requested 5000)

我发现 mysql 变量max_open_filesmax_open_files在我当前的配置中未设置!)是动态的,取决于 4 种不同的场景(请参阅:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_open_files_limit)就我而言,显然是没有场景。使用4。

所以我的观点是: 14.04 和 16.04 上的 mysql-config 是相同的,但看起来 systemd 的资源管理行为与 14.04 上的不同(使用ulimit& /etc/security.d/limits.conf) mysql 使用场景 4 的条件是,'if操作系统的限制是无限的'是真的......为什么操作系统的极限是无穷大吗?

我正在努力解决的另一件事:如果我max_open_files在 mysql-config 中定义为“1000”并查看一下,/proc/[myslq-pid]/limits我可以看到软限制设置为 1000,硬限制设置为 4096。

问题1:为什么限制是 4096,因为上面的条件 4 在“如果操作系统限制是无穷大”上成立...

我可以设置max_open_files为 1 到 4096 之间的任何值,它定义了限制 - 这是预期的行为。但如果它设置高于 4096,则会回落到 softlimit=1024 和 hardlimit=4096。我不理解这种行为,因为上面的条件 4 再次满足if operating system limit is Infinity...

这导致我的问题2:这个“默认值”从哪里来?为什么我无法将限制设置为高于 4096?

笔记:一旦我LimitNOFILE=number在 systemd 的 mysql-service-unit 中定义,“number”就会设置为软限制和硬限制,并且我能够定义高于 4096 的值。通过/proc/[myslq-pid]/limits再次查看确认。

我查看了 systemd 的文档,但出于某种原因,在“默认值”方面唯一提到的是/etc/systemd/system.conf/etc/systemd/user.conf文件,我可以在其中定义DefaultLimitNOFILE=,默认情况下未设置 - 那么是否有default Default??

我真的不支持这种行为......希望有人能提供有关如何解决此问题的提示。

我接受你的任何建议或暗示!

我什至很乐意阅读更多文档来解释这一点 - 但我只是没有找到合适的文档......我发现的所有内容都让我回到systemd.资源控制,设置限制,系统执行程序systemd/ControlGroup接口这并没有让我比在这里结束更进一步:)

相关内容