1

当进程崩溃然后核心转储时,我们遇到了一个问题。由于进程占用内存大——20GB左右,核心转储需要将20GB核心数据写入磁盘,磁盘使用率变得非常高,负载急剧增加。

如何限制核心转储的写入速度?一个进程崩溃使服务器挂起,这太糟糕了。

4

1 回答 1

4

我相信没有简单的方法。

但是,在 Linux 上,您可以使用该/proc/sys/kernel/core_pattern文件(参见core(5)proc(5)手册页),甚至可以 - 当它core_pattern以管道符号开头时|- 将核心写入程序(或脚本),然后可能会减慢写作速度。

或者,您可以拥有一些用户空间文件系统(例如通过FUSE)。

并且该core文件可能是指向其他地方的符号链接(例如,会减慢写入速度的 FUSE 文件系统,或者只是某个 SSD 磁盘上的快速文件系统)。

当然,您也可以避免转储内核(通过setrlimit(2)或 shell 的ulimit内置函数,或通过gdb --args...启动程序)

而且我想如果你ionice(1)适当的命令,所有磁盘 I/O 都可以合理地减慢。

PS。我从未测试过这些想法中的任何一个,所以我可能是错的。

于 2013-02-27T09:49:26.170 回答