gpt4 book ai didi

node.js - 运行 Express 时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:00 28 4
gpt4 key购买 nike

在使用 PM2 运行 Express 应用程序时,我非常随机地收到 SIGSEGV。奇怪的是,过去几周服务器运行得很好。它不会打印任何错误消息,除了:

App [XXX] with id [7] and pid [27757], exited with code [255] via signal [SIGSEGV]      

实现“segfault-handler”模块后,我开始收到一些堆栈跟踪。该应用程序似乎遇到了一些不同的段错误:

/lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7fd211f87330]
node(_ZN2v88internal9HashTableINS0_15ObjectHashTableENS0_20ObjectHashTableShapeENS0_6HandleINS0_6ObjectEEEE18FindInsertionEntryEj+0x40)[0xc0b680]
node(_ZN2v88internal15ObjectHashTable3PutENS0_6HandleIS1_EENS2_INS0_6ObjectEEES5_i+0x124)[0xc0c0a4]
node(_ZN2v88internal7Runtime17WeakCollectionSetENS0_6HandleINS0_16JSWeakCollectionEEENS2_INS0_6ObjectEEES6_i+0x59)[0xc7d639]
node(_ZN2v88internal25Runtime_WeakCollectionSetEiPPNS0_6ObjectEPNS0_7IsolateE+0x11d)[0xc7d89d]
[0x2acdd80963b]

/lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7f0fc311c330]
node(_ZN2v88internal32IncrementalMarkingMarkingVisitor26VisitFixedArrayIncrementalEPNS0_3MapEPNS0_10HeapObjectE+0x376)[0xad8a16]
node(_ZN2v88internal18IncrementalMarking4StepElNS1_16CompletionActionENS1_18ForceMarkingActionENS1_21ForceCompletionActionE+0x2c1)[0xad6181]
node(_ZN2v88internal8NewSpace15SlowAllocateRawEiNS0_19AllocationAlignmentE+0x74)[0xb05244]
node(_ZN2v88internal4Heap11AllocateRawEiNS0_15AllocationSpaceES2_NS0_19AllocationAlignmentE+0x1b9)[0xa678c9]
node(_ZN2v88internal4Heap20AllocateFillerObjectEibNS0_15AllocationSpaceE+0x19)[0xab00b9]
node(_ZN2v88internal7Factory15NewFillerObjectEibNS0_15AllocationSpaceE+0x2d)[0xa67d1d]
node(_ZN2v88internal29Runtime_AllocateInTargetSpaceEiPPNS0_6ObjectEPNS0_7IsolateE+0x5e)[0xc99e8e]
[0x249862c06355]

/lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7fbebabd2330]
node(_ZN2v88internal9HashTableINS0_15ObjectHashTableENS0_20ObjectHashTableShapeENS0_6HandleINS0_6ObjectEEEE18FindInsertionEntryEj+0x40)[0xc0b680]
node(_ZN2v88internal15ObjectHashTable3PutENS0_6HandleIS1_EENS2_INS0_6ObjectEEES5_i+0x124)[0xc0c0a4]
node(_ZN2v88internal7Runtime17WeakCollectionSetENS0_6HandleINS0_16JSWeakCollectionEEENS2_INS0_6ObjectEEES6_i+0x59)[0xc7d639]
node(_ZN2v88internal25Runtime_WeakCollectionSetEiPPNS0_6ObjectEPNS0_7IsolateE+0x11d)[0xc7d89d]
[0x125b9620963b]

我知道这里的信息很少。谁能告诉我开始诊断的好方法吗?我检查了 PM2 日志、mongoDB 日志,但没有运气。

谢谢!火星

最佳答案

由于堆栈跟踪每次都不同并且不是很有启发性,因此您所能做的就是尝试一些东西。第一个主要嫌疑人将是使用 native 代码的东西,因为普通 Javascript 不太可能导致 segFault。可能是 native 代码以某种方式破坏了内存或无法与 Node.js 中的垃圾收集器正确交互。

因此,需要寻找的是当前版本的 Node.js 与使用 native 代码的内容(例如 mongoDB)之间的交互。以下是可以尝试的事情:

  1. 识别所有使用 native 代码的模块,并暂时删除任何不需要的模块。

  2. 将 node.js 和 mongoDB 升级到最新版本,以防特定版本之间的某些交互导致问题。如果您无法将 Node.js 升级到最新的稳定版本,请绝对确保您正在运行的所有模块都经过认证,与您拥有的 Node.js 版本保持稳定。

  3. 重新启动服务器,以防操作系统中出现任何问题而导致问题。

  4. 从一个干净的数据库开始,或者对数据库运行某种数据库检查,以验证那里没有损坏。

  5. 每当您更新数据库方案时,请确保您有一个策略来向前移动先前的数据库(看起来在 MongoDB 中您只需确保为新方案元素分配一个默认值即可)。

  6. 进行更改后收集新信息并重复该过程,尝试一次只更改一件事,这样如果解决了问题,您就会确切地知道是哪个项目解决了问题。

关于node.js - 运行 Express 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com