我在上安装了一个崩溃处理程序
/proc/sys/kernel/core_pattern
它通过管道将传入的coredump传输到一个文件,然后通过gdb提取stacktrace。
问题是,有时这些核心转储可能非常非常大(通常超过30GB)。在这些情况下,在应用程序挂起之前,用户会在将coredump写入磁盘时等待。
关于如何以非阻塞的方式处理这些非常大的核心转储,有什么建议吗?我不在乎核心转储本身,堆栈竞争才是有价值的。
我无法访问来源,所以答案如下https://serverfault.com/questions/627747/non-blocking-core-dump-on-linux不是那么实用。
谢谢!
我无法访问来源,所以答案如下https://serverfault.com/questions/627747/non-blocking-core-dump-on-linux不是那么实用。
如果应用程序是动态链接的,那么您可以LD_PRELOAD
将coredumper搜索到其中,因此答案在一定程度上是实用的。
另一种可能的选择是http://github.com/tbricks/tbstack.
当然,为了扔掉大部分内存而丢弃30GB的RAM是浪费。