昨天我们在Debian 8上运行PostgreSQL 9.5.14时崩溃(Linux xxxxxx 3.16.0-7-amd64#1 SMP Debian 3.16.59-1(2018-10-03)x86_64 GNU / Linux)-分段错误。数据库关闭了所有连接,并在恢复模式下自行初始化了大约1分钟。
PostgreSQL日志:
2018-10-xx xx:xx:xx UTC [580-2]日志:服务器进程(PID 16461)为 由信号11终止:分段错误
kern.log:
十月xx xx:xx:xx xxxxxxxx内核:[117977.301353] postgres [16461]: segfault at 7efd3237db90 ip 00007efd3237db90 sp 00007ffd26826678错误 15在libc-2.19.so [7efd322a2000 + 1a1000]
根据libc文档(https://support.novell.com/docs/Tids/Solutions/10100304.html)错误代码15表示:
NX_EDEADLK 15 resource deadlock would occur
-并不能告诉我很多。
能否请您告诉我,我们将来是否可以采取某些措施来避免此问题?因为该服务器当然是生产服务器。 所有软件包当前都是最新的。不幸的是,PG升级不是可选项。服务器在Google Compute Engine上运行。
答案 0 :(得分:1)
错误代码15表示:NX_EDEADLK 15
不,不是。 This answer在此处解释了如何解释15。
位0、1、2、3置位=>保护故障,写访问,用户模式,保留位的使用。您的postgress
进程很可能试图写入一些野指针。
如果将来我们能做些什么来避免这个问题?
您只能做的 操作是查找该错误并进行修复,或者升级到已修复该错误的postgress
版本(并希望不引入任何新错误) )。
要了解错误可能在哪里,您应该检查是否产生了core
转储(如果没有,请启用它们)。如果您有core
,请使用gdb /path/to/postgress /path/to/core
,然后使用where
GDB命令。这将为您提供崩溃堆栈跟踪,这可能使您可以找到类似的错误报告。