在 docker 中构建 nextjs/node 应用程序时出现奇怪的内存/IO 错误

问题描述 投票:0回答:1

我有Linux服务器,配备1.3T nvme ssd和64GB RAM内存。

有基于最新的nextjs和nod的生产应用程序。所以我有 docker-compose 和前端容器,我只需复制 src 文件并在 Dockerfile 中执行:

RUN yarn install
RUN yarn build

一段时间一切正常,但昨天我遇到了不同的问题。

首先,当我想重新部署所有内容时,yarn install 开始挂在随机位置,表明我的网络速度很慢(事实并非如此)。 作为临时解决方案,我决定在主机上运行yarn install,并在 Dockerfile 内将带有 node_modules 的源代码复制到容器中。它有效,但第二步在构建步骤上开始失败:

#23 0.261 yarn run v1.22.22
#23 0.283 $ GENERATE_SOURCEMAP=false next build
#23 0.717
#23 0.757   ▲ Next.js 14.2.5
#23 0.757
#23 0.804    Creating an optimized production build ...
#23 13.93 FATAL ERROR: v8::Object::GetCreationContextChecked No creation context available
#23 13.93 ----- Native stack trace -----
#23 13.93
#23 13.93  1: 0xe22fc9 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
#23 13.93  2: 0x122b176 v8::Utils::ReportApiFailure(char const*, char const*) [/usr/local/bin/node]
#23 13.93  3: 0x12405ac v8::Object::GetCreationContextChecked() [/usr/local/bin/node]
#23 13.93  4: 0xf7d90c  [/usr/local/bin/node]
#23 13.93  5: 0x7f78dd77613c
#23 13.93
#23 13.93
#23 13.93 #
#23 13.93 # Fatal error in , line 0
#23 13.93 # Missing deoptimization information for OptimizedFrame::Summarize.
#23 13.93 #
#23 13.93 #
#23 13.93 #
#23 13.93 #FailureMessage Object: 0x7fff91793c30
#23 13.93 ----- Native stack trace -----
#23 13.93
#23 13.93  1: 0xffe461  [/usr/local/bin/node]
#23 13.93  2: 0x28c276b V8_Fatal(char const*, ...) [/usr/local/bin/node]
#23 13.93  3: 0x139cff3 v8::internal::OptimizedFrame::Summarize(std::vector<v8::internal::FrameSummary, std::allocator<v8::internal::FrameSummary> >*) const [/usr/local/bin/node]
#23 13.93  4: 0x13a5116  [/usr/local/bin/node]
#23 13.93  5: 0x13a931c v8::internal::Isolate::CaptureDetailedStackTrace(int, v8::StackTrace::StackTraceOptions) [/usr/local/bin/node]
#23 13.94  6: 0x12361f3 v8::StackTrace::CurrentStackTrace(v8::Isolate*, int, v8::StackTrace::StackTraceOptions) [/usr/local/bin/node]
#23 13.94  7: 0xf76c96 node::GetCurrentStackTrace(v8::Isolate*, int) [/usr/local/bin/node]
#23 13.94  8: 0xec549b node::DumpJavaScriptBacktrace(_IO_FILE*) [/usr/local/bin/node]
#23 13.94  9: 0xe22fd5 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
#23 13.94 10: 0x122b176 v8::Utils::ReportApiFailure(char const*, char const*) [/usr/local/bin/node]
#23 13.94 11: 0x12405ac v8::Object::GetCreationContextChecked() [/usr/local/bin/node]
#23 13.94 12: 0xf7d90c  [/usr/local/bin/node]
#23 13.94 13: 0x7f78dd77613c
#23 14.07 Trace/breakpoint trap (core dumped)
#23 14.08 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
#23 14.08 error Command failed with exit code 133.
#23 ERROR: process "/bin/sh -c yarn build" did not complete successfully: exit code: 133

当我在没有 Docker 的主机上本地尝试这些步骤时,一切正常。所以问题只发生在Docker内部。我深入研究了与纱线安装挂起相关的错误,并且有一个参考文献表明这可能与 slow I/O 有关。构建的问题看起来也像是内存问题。

Docker 似乎由于某种原因没有足够的资源或开始运行缓慢。请注意,几个月前我们已经遇到了类似的问题。我们尝试完全擦除服务器,甚至要求 Hetzner 更换我们的 SSD,但这没有帮助,问题仍然存在。所以我们被迫转移到另一台服务器,到目前为止一切正常。

我不相信服务器第二次出现一些“物理”问题,但看起来很奇怪。

Docker 版本 26.1.4,内部版本 5650f9b NodeJ:22 Linux:Ubuntu-22.04

node.js linux docker next.js memory
1个回答
0
投票

我今天也遇到了同样的问题。我追踪到了节点版本 22.5.0 的根本原因,该版本是最近在我使用的基础 docker 映像中引入的。指定 22.4.0 解决了问题。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.