也许你会说,coredump很好啊,程序异常崩溃时候,coredump会提供程序的内存、堆栈、寄存器、函数栈等各种信息,是定位BUG的利器啊。
的确,我也同意,coredump有诸多好处。但是有一种场景让我不得不放弃它 - 如果程序运行时占用大量内存,异常崩溃时生成的coredump文件可能会非常非常大。比如,某个程序运行时占用20GB内存,当它异常时可能会生成40GB大小的core文件,而生成文件的写盘过程非常缓慢,这会严重影响系统的整体运行情况。可以假想,这个程序如果异常崩溃后其实也没什么太大影响,因为守护进程会自动检测并运行新的进程实例来恢复业务。但是,40GB大小的core文件写盘需要数分钟甚至数十分钟时间,在这期间业务就完全瘫痪了,这肯定不是你想看到的情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。