Next.js: [次の9]アプリのビルド時にメモリ䞍足

䜜成日 2019幎07月12日  Â·  66コメント  Â·  ゜ヌス: vercel/next.js

バグレポヌト

バグを説明する

アプリケヌションをNext8からNext9に移動したす。
next buildを実行するず、プロセスのメモリが䞍足し、アプリケヌションをビルドできなくなりたす。

参考たでに、それは倚かれ少なかれ20のルヌトを持぀アプリケヌションです。

再珟するには

䜕が悪かったのかわからないので、再珟するのは難しいです。 Next 8は問題なくコンパむルされたすが、Next9はコンパむルされたせん。

これがスタックトレヌスです。 より説明的な出力を取埗する方法をご存知の堎合は、お知らせください。以䞋を提䟛したす。



<--- Last few GCs --->

[28143:0x102634000]   231190 ms: Mark-sweep 1278.7 (1441.0) -> 1263.4 (1438.5) MB, 838.4 / 0.0 ms  (average mu = 0.290, current mu = 0.268) allocation failure scavenge might not succeed
[28143:0x102634000]   231308 ms: Scavenge 1278.1 (1438.5) -> 1266.6 (1440.0) MB, 8.2 / 0.0 ms  (average mu = 0.290, current mu = 0.268) allocation failure 
[28143:0x102634000]   231365 ms: Scavenge 1279.3 (1440.0) -> 1271.6 (1443.0) MB, 21.6 / 0.0 ms  (average mu = 0.290, current mu = 0.268) allocation failure 


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x3547db9dbe3d]
Security context: 0x3a36ebf9e6e1 <JSObject>
    1: DoJoin(aka DoJoin) [0x3a36ebf85e89] [native array.js:~87] [pc=0x3547dcd9a7d0](this=0x3a366f3826f1 <undefined>,l=0x3a368f6eb2b9 <JSArray[10]>,m=10,A=0x3a366f3828c9 <true>,w=0x3a36c3aafc69 <String[1]: />,v=0x3a366f3829a1 <false>)
    2: Join(aka Join) [0x3a36ebf85ed9] [native array.js:~112] [pc=0x3547dd85bb38](this=0x3a366f3826f1 <undefined>,l=0x3a368f6...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003ae75 node::Abort() [/usr/local/bin/node]
 2: 0x10003b07f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001a7ae5 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x100572ef2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x1005759c5 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
 6: 0x10057186f v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0x10056fa44 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 8: 0x10057c2dc v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0x10057c35f v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0x10054e1e4 v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
11: 0x10082784d v8::internal::Runtime_StringBuilderJoin(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x3547db9dbe3d 
[1]    28142 abort      npm run build:next

予想される行動

構築する必芁がありたす

スクリヌンショット

該圓する堎合は、問題の説明に圹立぀スクリヌンショットを远加しおください。

システムむンフォメヌション

  • OSmacOS
  • ノヌド10.13.0ノヌド8.Xでも動䜜する必芁がありたす
  • Next.jsのバヌゞョン9.0.1

远加のコンテキスト

ここに問題に関する他のコンテキストを远加したす。

needs investigation

最も参考になるコメント

@timneutkensは、レポを持っおいるので、問題を再開しおください。

党おのコメント66件

耇補なしでこれを远跡するこずは䞍可胜です。

ええ、私は知っおいたす。 ゜ヌスマップの生成の呚りにメモリヒヌプを取埗する前に、それを削陀したした。 そしお、ネむティブ配列ファむルに関するこの゚ラヌメッセヌゞが衚瀺されたした。

より詳现なスタックトレヌスを取埗する方法はありたすか

参考たでに、珟圚ビルド䞭ですが、ノヌドプロセスにメモリを远加したためです。

NODE_OPTIONS="--max_old_space_size=4096"

最倧28のルヌトを構築したすが、30のルヌト31のルヌトがありたすを指定するず、プロセスのメモリは最倧3GBおよびそれ以䞊になりたす。 私は8GBのメモリを搭茉した平均的なラップトップでビルドプロセスを実行しおいたすが、その䞀郚はすでに䜿甚されおいたす。 しかし、それはなんずかしたした。

この問題を開いたたたにしおおくべきかどうかわかりたせん。
それが圹立぀堎合は、ここに構築されたペヌゞの統蚈がありたす

image

゜ヌスマップを䜜成しようずするずほずんどの堎合、プロセスがクラッシュしたす。

本圓に私たちが知る唯䞀の方法は、完党な耇補が提䟛されおいるかどうかです。 ずりあえずこれを閉じたす。

Next 9にアップグレヌドした埌、メモリ䞍足゚ラヌが発生しおいるのに察し、Next8ではこれは問題ではなかったこずにも気づきたした。

この堎合、CIフロヌの䞀郚ずしおCircleCiでアプリを構築しおおり、次の問題が発生しおいたす。

Exited with code 137
Hint: Exit code 137 typically means the process is killed because it was running out of memory
Hint: Check if you can optimize the memory usage in your app
Hint: Max memory usage of this container is 4284268544
 according to /sys/fs/cgroup/memory/memory.max_usage_in_bytes

4GBはCircleCIコンテナのメモリ制限であるため、゚ラヌが発生したす。 Next 9で構築しおいるようで、その限界に達しおいたす。

珟時点では、再珟可胜なケヌスを共有するこずはできたせん。

NextJs 9を䜿甚しおアプリケヌションをデプロむするずきにも、この問題に盎面したした。

NextJs 9にアップグレヌドした3぀のプロゞェクトのうち、2぀はElasticBeanstalkにデプロむするずきにRAMの䜿甚䞊の問題に盎面しおいたす。 最終的には元に戻す必芁がありたす。 残念ながら、問題を再珟するために共有するリポゞトリがありたせん。

同じメモリ䞍足の問題が発生しおいたすが、すべおのラムダがビルドされた埌に発生したす。 ラップトップでビルドを完了するこずはできたすが、デプロむ時にクラッシュしたすが、ロヌカルでの開発䞭に定期的にメモリ䞍足の問題がいく぀か発生したす。 私にずっお認識できる唯䞀のものはこの行です

 readFile [/tmp/b0cc21aa63cece4e/.build-utils/.builder/node_modules/@now/next/dist/index.js:9555]

これがログです...


Aug 22 2019 01:26:51:346 | λ  (Lambda)       page was emitted as a lambda (i.e. getInitialProps)
-- | --
Aug 22 2019 01:26:51:346 | ⚡  (Static File)  page was prerendered as static HTML
Aug 22 2019 01:26:51:434 | Done in 146.48s.
Aug 22 2019 01:26:51:444 | preparing lambda files...
Aug 22 2019 01:34:22:983 | <--- Last few GCs --->
Aug 22 2019 01:34:22:983 | [430:0x23f5310]   666594 ms: Mark-sweep 4089.3 (4262.1) -> 4089.3 (4261.1) MB, 3898.4 / 0.0 ms  allocation failure GC in old space requested
Aug 22 2019 01:34:22:983 | [430:0x23f5310]   671097 ms: Mark-sweep 4089.3 (4261.1) -> 4089.3 (4225.6) MB, 4502.8 / 0.0 ms  last resort GC in old space requested
Aug 22 2019 01:34:22:983 | [430:0x23f5310]   674990 ms: Mark-sweep 4089.3 (4225.6) -> 4089.3 (4223.1) MB, 3892.4 / 0.0 ms  last resort GC in old space requested
Aug 22 2019 01:34:22:983 | <--- JS stacktrace --->
Aug 22 2019 01:34:22:983 | ==== JS stack trace =========================================
Aug 22 2019 01:34:22:983 | Security context: 0x70e9f6257c1 <JSObject>
Aug 22 2019 01:34:22:983 | 1: toString [buffer.js:611] [bytecode=0x2833662c6061 offset=31](this=0xce2ca70dbc1 <Uint8Array map = 0x6cc06836709>,encoding=0x2fb750b822d1 <undefined>,start=0x2fb750b822d1 <undefined>,end=0x2fb750b822d1 <undefined>)
Aug 22 2019 01:34:22:983 | 2: arguments adaptor frame: 0->3
Aug 22 2019 01:34:22:983 | 3: readFile [/tmp/b0cc21aa63cece4e/.build-utils/.builder/node_modules/@now/next/dist/index.js:9555] [bytecode=0x1814135ff3e1 offset=53](t...
Aug 22 2019 01:34:22:983 | FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
Aug 22 2019 01:34:22:983 | 1:
Aug 22 2019 01:34:22:984 | node::Abort() [/node8/bin/node]
Aug 22 2019 01:34:22:984 | 2:
Aug 22 2019 01:34:22:986 | 0x11e73ec [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 3:
Aug 22 2019 01:34:22:986 | v8::Utils::ReportOOMFailure(char const*, bool) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 6:
Aug 22 2019 01:34:22:986 | v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector<char const>, v8::internal::PretenureFlag) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 7:
Aug 22 2019 01:34:22:987 | v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) [/node8/bin/node]
Aug 22 2019 01:34:22:987 | 8:
Aug 22 2019 01:34:22:987 | node::StringBytes::Encode(v8::Isolate*, char const*, unsigned long, node::encoding, v8::Local<v8::Value>*) [/node8/bin/node]
Aug 22 2019 01:34:22:987 | 9:
Aug 22 2019 01:34:22:988 | 0x12070d6 [/node8/bin/node]
Aug 22 2019 01:34:22:988 | 10:
Aug 22 2019 01:34:22:988 | v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) [/node8/bin/node]
Aug 22 2019 01:34:22:988 | 11:
Aug 22 2019 01:34:22:989 | 0xb79dac [/node8/bin/node]
Aug 22 2019 01:34:22:989 | 12:
Aug 22 2019 01:34:22:989 | v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [/node8/bin/node]
Aug 22 2019 01:34:22:989 | 13: 0x47a70c842fd
Aug 22 2019 01:35:32:549 | done

これが私のwebpack蚭定です

const loadConfig = require('./loadConfig');

const reNodeModules = /node_modules/;
const reScript = /\.(js|jsx|mjs)$/;
const reImage = /\.(bmp|gif|jpg|jpeg|png|svg)$/;
const reGraphql = /\.graphql?$/;
const reStyle = /\.(css|less|styl|scss|sass|sss)$/;

module.exports = (nextConfig = {}) => {
  return {
    ...nextConfig,
    webpack(config, options) {
      const { webpack, isServer, dev } = options;

      const staticAssetName = dev ? '[path][name].[ext]?[hash:8]' : '[name]-[hash:8].[ext]';
      const publicPath = '/_next/static/';
      const outputPath = `${isServer ? '../' : ''}static/`;

      // eslint-disable-next-line no-param-reassign
      config.resolve = {
        ...config.resolve,
        modules: [...config.resolve.modules, './src'],
      };

      config.module.rules.push(
        {
          test: reImage,
          exclude: reNodeModules,
          oneOf: [
            // Inline lightweight into CSS
            {
              issuer: reStyle,
              oneOf: [
                // Inline lightweight SVGs as UTF-8 encoded DataUrl string
                {
                  test: /\.svg$/,
                  loader: 'svg-url-loader',
                  options: {
                    name: staticAssetName,
                    limit: 4096, // 4kb
                    publicPath,
                    outputPath,
                  },
                },

                // Inline lightweight as Base64 encoded DataUrl string
                {
                  loader: 'url-loader',
                  options: {
                    name: staticAssetName,
                    limit: 4096, // 4kb
                    publicPath,
                    outputPath,
                  },
                },
              ],
            },

            // Or return public URL to image resource
            {
              loader: 'file-loader',
              options: {
                name: staticAssetName,
                publicPath,
                outputPath,
              },
            },
          ],
        }, // Rules for GraphQL
        {
          test: reGraphql,
          exclude: reNodeModules,
          use: [
            {
              loader: 'webpack-graphql-loader',
              options: {
                removeUnusedFragments: true,
                output: 'document',
              },
            },
          ],
        },
        {
          exclude: [reNodeModules, reScript, reImage, reGraphql, /\.json$/, /\.txt$/, /\.md$/],
          loader: 'file-loader',
          options: {
            name: staticAssetName,
            publicPath,
            outputPath,
          },
        },
      );

      const appConfig = loadConfig();
      if (isServer && dev) {
        console.info(appConfig);
      }
      config.plugins.push(
        new webpack.DefinePlugin({
          __DEV__: dev,
          __SERVER__: isServer,
          __BROWSER__: !isServer,
          __CONFIG__: JSON.stringify(appConfig),
        }),
      );

      if (typeof nextConfig.webpack === 'function') {
        return nextConfig.webpack(config, options);
      }

      return config;
    },
  };
};

@timneutkens Next.js9も䜿甚しおメモリが䞍足しおいたす。 コンパむルしおいるコンポヌネントの数が原因である可胜性がありたす。 あなたはそれの完党な再珟が必芁だず蚀いたした。 あなたは私の支店を芋るこずができたす。
https://github.com/stramel/styled-icons/tree/ms/add-material-variants

倱敗したビルドは次のずおりです https 

TravisにはNODE_OPTIONS=--max-old-space-size=4096蚭定されおいたす

@timneutkensは、レポを持っおいるので、問題を再開しおください。

[email protected]でも同じ問題に

これらのアプリケヌションは、単にサむズの限界に達しおメモリ䞍足になり始めたず思いたす。 NODE_OPTIONS=--max-old-space-size=4096介しお、より倚くのビルドを実行する必芁がありたす。

たたは、新しいチャンク機胜を有効にするこずもできたす。

// next.config.js
module.exports = {
  experimental: { granularChunks: true }
}

@Timerに感謝したす。 granularChunks機胜を詊しおみたす。

たた、念のために蚀っおおきたすが、ロヌカルマシンの倀ずしお8192を詊したしたが、それでも倱敗したした。 実際に構築するために必芁なメモリ量を想像するのは少し怖いです。

叀い問題を調べたずころ、新しいメゞャヌリリヌスがあったずきに、このメモリの問題に盎面する人がいるこずに気づきたした。 倧きなプロゞェクトでメモリテストをしたすか

この新しいメゞャヌリリヌスは、ノヌドのメモリ䞊限に達しおいたす。 以前はなかったこの倧量のメモリの原因は䜕ですか

@Timer granularChunks機胜を䜿甚しようずしたしたが、それでも同じ問題が発生したした。 ロヌカルでも8192セット。

これには、グラニュラヌチャンク構成機胜セットhttps://github.com/stramel/styled-icons/tree/ms/granular-chunksがありたす

コンポヌネントを動的にプルするように切り替えたした、 https//github.com/stramel/styled-icons/tree/ms/dynamic-import-granular-chunks

この問題は、ミニファむを実行するようにビルドを倉曎したずきにリポゞトリの1぀で発生したす。これは、珟圚デフォルトで無効になっおいたす。

曎新コヌドベヌスで問題がwithSourceMapsプラグむンを䜿甚しおいるず刀断したした

"@zeit/next-source-maps": "^0.0.4-canary.1"

非垞に遅いhidden-source-mapに蚭定しおいるので、これは理にかなっおいたす。 ただし、NextJS8よりも指数関数的に遅い理由はわかりたせん。

たた、v9にアップグレヌドした埌、パフォヌマンスの倧きな問題に気づきたした... 2015 macbook proを䜿甚しおいたす。これたで遅れるこずはなく、かなり重いプログラムを実行したしたが、次のアプリをロヌカルで実行するたびにそれは完党に遅れ、すべおが倧幅に遅くなりたす。

私は通垞10分ごずにアプリを再起動する必芁がありたす。今日は私が頑匵っおそれをやり遂げようずした最初の日でした、そしお開発移動で数時間実行した埌、私は人々ず同じJavaScript heap out of memoryを手に入れたした次のビルドの実行から報告されたした。 ここのどこかにメモリリヌクがあるはずです

私もそう思いたす。 私の同僚は最近のMacBookを持っおいお、次の9にアップグレヌドしおから、開発サヌバヌの再コンパむルが遅くなりたした。 時々それは20秒かかる。

32GBの物理メモリMacBookProでNODE_OPTIONS = 16384を蚭定しようずしおも、同じ問題が発生したすが、効果はありたせん。

ログが䞀芧衚瀺されたす。

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x335bafb5be3d]
Security context: 0x0fe28be1e6e9 <JSObject>
    1: createPrinter [0xfe25fe2c0b9] [/Users/my-name/my-project/node_modules/typescript/lib/typescript.js:~86713] [pc=0x335bb12e86f3](this=0x0fe280c03329 <Object map = 0xfe2df152cc9>,printerOptions=0x0fe2f39e8ae1 <Object map = 0xfe20ac205a9>,handlers=0x0fe28e1026f1 <undefined>)
    2: arguments adaptor frame: 1->2
    3: reportImplicitAny(aka reportImpli...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d035 node::Abort() [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 2: 0x10003d23f node::OnFatalError(char const*, char const*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 5: 0x100589845 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 6: 0x1005856ef v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 7: 0x1005838c4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 8: 0x10059015c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
 9: 0x1005901df v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
10: 0x10055fb24 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
11: 0x1007e7e04 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
12: 0x335bafb5be3d
13: 0x335bb12e86f3
14: 0x335bafb0a5c3

@timneutkensは、この問題を

別の蚌人を远加したす。
Nextバヌゞョン4.2.3でアプリを継承したした。

  • 次のバヌゞョン9.1.3に曎新したした
  • package.jsonの他のすべおのパッケヌゞバヌゞョンを曎新したした。
  • node_modulesフォルダヌずpackage.lock.jsonを削陀したした
  • npminstallを実行したした

プロゞェクトのロヌカルサヌブを実行するず、次の゚ラヌで倱敗したした。
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
倱敗は通垞、アプリを起動しおから10分以内に発生し、アプリでより倚くのナビゲヌションをトリガヌするこずで早めるこずができたす。

バヌゞョン8.1.0に戻したしたが、より本栌的なナビゲヌションしたがっおペヌゞビルドを行っおも、同じ倱敗を再珟するこずはできたせん。

うん、これも芋おいる...

再開する時間だず思いたす@timneutkens

開発モヌドでbootstrap.min.cssのむンポヌトを開始しおから、昚日から、react-routerカスタムサヌバヌで[email protected]でもこの問題に盎面しおいたす。

js経由でrequire / importを䜿甚しおbootstrap.min.cssを盎接むンポヌトする堎合、たたはcss / scss経由で@importを䜿甚する堎合の䞡方。 䜿甚するnodejsメモリは、開発䞭にいく぀かの準拠が行われた埌、増加したした。

しかし、cdnからブヌトストラップをむンポヌトするず、 に

next / headを䜿甚するず、長い開発時間で倚くのコンプラむアンスを実行した埌でも、メモリは正垞に動䜜するように芋えたす。
<Head>
<meta key="viewport" name="viewport" content="initial-scale=1.0, width=device-width" />
<link key="bootstrapcdn" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" ...  />
...
</Head>

したがっお、問題はnext-cssでのcssの瞮小にあったず思いたす。 プロゞェクトを8.1.0にダりングレヌドするず、この瞮小の問題が発生したためです。 https://github.com/zeit/next-plugins/issues/541。 だから私はこの回避策を詊したしたhttps://github.com/zeit/next-plugins/issues/392#issuecomment-475845330。 ただメモリの問題

// next.config.js
const withCSS = require('@zeit/next-css');

function HACK_removeMinimizeOptionFromCssLoaders(config) {
  console.warn(
    'HACK: Removing 'minimize' option from 'css-loader' entries in Webpack config',
  );
  config.module.rules.forEach(rule => {
    if (Array.isArray(rule.use)) {
      rule.use.forEach(u => {
        if (u.loader === 'css-loader' && u.options) {
          delete u.options.minimize;
        }
      });
    }
  });
}

module.exports = withCSS({
  webpack(config) {
    HACK_removeMinimizeOptionFromCssLoaders(config);
    return config;
  },
});

Next 9.1.3にアップグレヌドした埌、同じ問題が発生したす。 私もnext-cssを䜿甚しおいたすが、それが実際にクラッシュしおいるのでしょうか

これがすべおの人にずっお同じであるかどうかは完党にはわかりたせんが、芁求しおいるリ゜ヌスが実際に芋぀かるこずを確認しおください。 アプリが芋぀けられなかった画像があり、ヒヌプ゚ラヌが発生するたで画像を探し続けたした。 私はその画像の蚀及を削陀したした、そしおそれは私に再び゚ラヌを䞎えたせんでした。

私もこれを修正するこずができたした。

私の堎合、 /public/manifest.jsonを<head/> metaタグずしお<head/> 、そのリ゜ヌスがプロゞェクトに存圚せず、これがメモリリヌクの原因でした。

私はこのコヌドを持っおいたしたが、 icon.pngは存圚したせん

<Head>
  <link rel="icon" href="/static/icon.png" type="image/png" />
</Head>

ファビコンのむンポヌトを修正するこずで、メモリリヌク゚ラヌが発生しなくなりたした

<Head>
  <link rel="icon" href="/icon.png" type="image/png" />
</Head>

https://github.com/zeit/now/issues/3307で述べたように、 static / publicフォルダヌで問題が発生しおいるず思いたす。

私もこの問題を抱えおいたした。 ブキノシタが蚀ったように、私は静的フォルダを調べたした。 public/static/フォルダヌからテスト目的で674個のjsonファむルのフォルダヌを削陀したした。 それ以来、問題はありたせんでした。

この問題は、ミニファむを実行するようにビルドを倉曎したずきにリポゞトリの1぀で発生したす。これは、珟圚デフォルトで無効になっおいたす。

曎新コヌドベヌスで問題がwithSourceMapsプラグむンを䜿甚しおいるず刀断したした

"@zeit/next-source-maps": "^0.0.4-canary.1"

非垞に遅いhidden-source-mapに蚭定しおいるので、これは理にかなっおいたす。 ただし、NextJS8よりも指数関数的に遅い理由はわかりたせん。

"@zeit/next-source-maps": "^0.0.4-canary.1"にアップグレヌドした埌も、この問題が発生し始めたした。 解決策はありたすか、それずも゜ヌスマップを削陀する必芁がありたすか

@focux゜ヌスマップをたったく無効にする必芁がありたした。 その埌、メモリの䜿甚量は倧幅に枛少したした

ここでも同じ問題がありたす。 ビルドのファむルサむズが倧きすぎるずクラッシュするようです。 たずえば、Typescriptから䜕かをむンポヌトしたずころ、ビルドのファむルサむズが2.41mbになりたした。 その埌、2GBのRAMを搭茉したCIがクラッシュし始めたした。 Typescriptむンポヌトを削陀した埌、ファむルサむズは100kbに​​枛少し、再び機胜したした。

Nextjs 9は、最初からCIで非垞に遅いです。 ビルドには非垞に時間がかかり、特別なニヌズはありたせん...ただ反応するもの、マテリアルUI、あちこちのパッケヌゞがありたす。 私はノヌド/゚クスプレス、いく぀かのドットネットコア、phpなどず同じクラスタヌにCIを持っおいたす。これらはすべおCIに1GBのメモリがあり、かなり高速にビルドされたす。 ビルドプロセスに぀いおの私の気持ち以䞊に䜕か問題があるのか​​わかりたせんか

ここでも同じ問題がありたす。 Mac OS / Githubアクション。 ここに蚘茉されおいるアクションは圹に立ちたせん。リンクされおいるが存圚しないファむルを芋぀けるこずができたせん。

ただし、プロゞェクトはZeit Nowでビルドされたすそしお本番環境にありたす。

方法を知っおいれば助けたいです。

ここでも同じ問題MacOS。 私が芋぀けたのは

  • Next9.1.5および9.1.6で発生し始めたす。 9.1.4にダりングレヌドするず、゚ラヌが消えたす。
  • プロゞェクト内に独自の_ckeditor_ビルドがあり、そのサむズは606KBです。 削陀するず問題はなくなりたす。

手䌝っおもらえたら教えおください。 ここに゚ラヌログがありたす...

<--- Last few GCs --->

[83442:0x102804000]   123060 ms: Scavenge 1371.3 (1422.4) -> 1370.7 (1422.9) MB, 8.3 / 0.0 ms  (average mu = 0.120, current mu = 0.058) allocation failure 
[83442:0x102804000]   123066 ms: Scavenge 1371.7 (1422.9) -> 1370.9 (1423.9) MB, 4.1 / 0.0 ms  (average mu = 0.120, current mu = 0.058) allocation failure 
[83442:0x102804000]   123071 ms: Scavenge 1371.7 (1423.9) -> 1371.0 (1424.4) MB, 3.9 / 0.0 ms  (average mu = 0.120, current mu = 0.058) allocation failure 


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x3b944125be3d]
Security context: 0x164494d1e6e9 <JSObject>
    1: SourceMapConsumer_allGeneratedPositionsFor [0x16448b97d331] [/Users/alberto.iglesias/Coding/iteisa/projects/ceoe-gis/node_modules/@babel/core/node_modules/source-map/lib/source-map-consumer.js:~178] [pc=0x3b944240968c](this=0x1644193fb679 <BasicSourceMapConsumer map = 0x16448ea8a239>,aArgs=0x16447d082249 <Object map = 0x16448ea98939>)
    2: /* anonym...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d035 node::Abort() [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 2: 0x10003d23f node::OnFatalError(char const*, char const*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 5: 0x100589845 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 6: 0x1005856ef v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 7: 0x1005838c4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 8: 0x10059015c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
 9: 0x1005901df v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
10: 0x10055fb24 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
11: 0x1007e7e04 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
12: 0x3b944125be3d 
13: 0x3b944240968c 
Abort trap: 6

SourceMapConsumer_allGeneratedPositionsForこれが原因だず思いたす。 開発モヌドでは、゜ヌスマップの生成がありたす。 時間の経過ずずもに、この゜ヌスマッププラグむンはメモリを保持しすぎるず思いたす。

゜ヌスマップの生成をオフにしおも同じ問題が発生したす

Сергей。

1001 GMTでの2019幎12月24日には、゚マヌ゚ヌレ[email protected]は曞きたした

SourceMapConsumer_allGeneratedPositionsForこれが原因だず思いたす。 開発モヌドでは、゜ヌスマップの生成がありたす。 時間の経過ずずもに、これらの゜ヌスマッププラグむンはメモリを保持しすぎるず思いたす。

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで登録を解陀しおください。

「私はただこれを経隓しおいたす」ず投皿しおも問題は解決しないこずに泚意しおください。 人々が調べるための完党な耇補を提䟛したす。そうでない堎合、あなたのコメントは最初の問題で👍を行うのず同じですが、理由もなく問題のすべおの人にpingを送信したす。

コメントが実甚的たたは有甚であるこずを垞に確認しおください。 たずえば、問題の調査に基づいお物事を共有するematipicoのように圹立ちたす。 「ただこの問題がありたす」ず蚀っおも圹に立ちたせん。

回避策はありたすか CI / CDパむプラむンが1GBのRAMで倱敗したす。

@timneutkensの再珟手順は、このクロヌズド号に蚘茉されおいるずおりです。

https://github.com/zeit/next.js/issues/9442#issuecomment -554839437

@ Vista1nikの回避策は、非掚奚の静的ディレクトリを再䜜成するこずでした。

関連する珟圚の問題

https://github.com/zeit/now/issues/3307

それが誰かを助ける堎合に備えお、議論に远加するだけです。
メモリ䞍足が発生しおいたしたが、私の堎合は䜕が問題であるかがわかりたした。

次のコヌドスニペットでは、 const Iconがたたたたundefinedある堎合、コヌドはコンポヌネントが有効かどうかをチェックする無限ルヌプに入りたす。

const iconMapping = {
  "flash-outline": FlashOutline,
};

export const Icon = ({ name }) => {
  const Icon = iconMapping[name];

  return <Icon />;
}

const Iconが定矩されおいないかどうかのチェックを远加するず、メモリ䞍足の問題が解消されたす。

...
  const Icon = iconMapping[name];

  if (!Icon) return null;
  return <Icon />;
}

同じこずが私にも起こりたした、そしお私はそれを匕き起こしたタむプミスであるこずに気づきたした

const Button = ({ children }) => {
  // BUG: the button should be lower case (the HTML input)
  //      instead of CamelCase (an undefined component)
  return <Button>{children}</Button>
}

Next.jsの最新バヌゞョンにアップグレヌドしおみおください。最近、メモリ䜿甚量を倧幅に最適化したした。

@timneutkens 、私は最新バヌゞョン9.3.5を持っおいたす。 私は今朝プロゞェクトを䜜成し、数分埌にその゚ラヌに盎面したした。

next-source-mapsを䜿甚しお゜ヌスマップでアプリを構築しおいるずきに、CricleCIで同様の問題が発生したした

NODE_OPTIONS="--max_old_space_size=4096"はロヌカルで圹立ちたしたが、CircleCIでは、少なくずもそれを機胜させるには、リ゜ヌスクラスhttps://circleci.com/docs/2.0/configuration-reference/#resource_classをlargeに増やす必芁がありたす。正しく。

今日、次の9.3.6に曎新した埌、この゚ラヌが発生し始めたした。

<--- Last few GCs --->

[66325:0x108008000]    17639 ms: Mark-sweep 1936.2 (2071.4) -> 1923.6 (2073.4) MB, 283.4 / 0.0 ms  (average mu = 0.157, current mu = 0.048) allocation failure scavenge might not succeed
[66325:0x108008000]    17937 ms: Mark-sweep 1938.1 (2073.4) -> 1925.4 (2075.4) MB, 285.8 / 0.0 ms  (average mu = 0.108, current mu = 0.042) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x0fb9ac667d09 <JSObject>
    0: builtin exit frame: stringify(this=0x0fb9ac6598a9 <Object map = 0xfb921b01449>,0x0fb958e804d1 <undefined>,0x0fb958e804d1 <undefined>,0x0fb910180ec1 <Object map = 0xfb9d8491399>,0x0fb9ac6598a9 <Object map = 0xfb921b01449>)

    1: arguments adaptor frame: 1->3
    2: callAsync [0xfb9320a6cf9] [0x0fb958e804d1 <undefined>:~1] [pc=0x1aa09fe84627](this=0x0fb9320a6909 <Hook map = 0xfb9d8495179>...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
...

12280で提案されおいるように、 tsconfig.json pathsしお修正したした

おそらく別の原因

9.0.5から9.3.6にアップグレヌドした埌も、同じ問題が発生したす。

Creating an optimized production build ..
<--- Last few GCs --->

[1600:0000020DB9FFEBE0]    26245 ms: Mark-sweep 1958.0 (2080.3) -> 1945.0 (2081.5) MB, 266.4 / 0.0 ms  (average mu = 0.179, current mu = 0.077) allocation failure scavenge might not succeed
[1600:0000020DB9FFEBE0]    26530 ms: Mark-sweep 1959.9 (2082.0) -> 1947.2 (2083.8) MB, 265.9 / 0.0 ms  (average mu = 0.127, current mu = 0.068) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 00007FF77B4D4DDD]
Security context: 0x00e7d00c08d1 <JSObject>
    1: /* anonymous */(aka /* anonymous */) [000002BB3E5CAA29] [C:\Users\...\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:~27] [pc=00000147695447FC](this=0x00d9404004b1 <undefined>,0x001a9e083681 <Object map = 000003D51551D3A9>,0x001a9e0838d9 <Object map = 000003D515521AE9>,0x001a9e083979 ...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF77A8D363F napi_wrap+128063
 2: 00007FF77A872836 v8::base::CPU::has_sse+35142
 3: 00007FF77A8734F6 v8::base::CPU::has_sse+38406
 4: 00007FF77B089F4E v8::Isolate::ReportExternalAllocationLimitReached+94
 5: 00007FF77B072021 v8::SharedArrayBuffer::Externalize+833
 6: 00007FF77AF3E57C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436
 7: 00007FF77AF497D0 v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312
 8: 00007FF77AF462F4 v8::internal::Heap::PageFlagsAreConsistent+3204
 9: 00007FF77AF3BB13 v8::internal::Heap::CollectGarbage+1283
10: 00007FF77AF3A184 v8::internal::Heap::AddRetainedMap+2452
11: 00007FF77AF5C734 v8::internal::Factory::NewInternalizedStringImpl+132
12: 00007FF77AD9C7FD v8::internal::DescriptorArray::Allocate+4941
13: 00007FF77ADAD0C5 v8::internal::StringTable::LookupString+373
14: 00007FF77AAAF356 v8::internal::Factory::InternalizeName+54
15: 00007FF77ACAB0BE v8::internal::Runtime::GetObjectProperty+9662
16: 00007FF77B4D4DDD v8::internal::SetupIsolateDelegate::SetupHeap+546637
17: 00000147695447FC

䜕か案が

@szazaはnext@canaryを詊すこずができたす。最も可胜性の高いケヌスは、 https  。

わかりたした。 node_modulesを削陀しお䟝存関係を再むンストヌルした埌、カナリアバヌゞョンで動䜜するようですが、別の゚ラヌが発生したした Cannot find module 'next-server/dist/server/next-server'. 。 おなじみですか

了解したした。 import Server from "next/dist/next-server/server/next-server"; 。
今では正垞に動䜜したす。 ご協力いただきありがずうございたす

@szazaどのようにしおそのモゞュヌルをプロゞェクトにむンポヌトするこずになったのですか それは内郚モゞュヌルですか 代わりに'next'をむンポヌトする぀もりだったず思いたすか

TypeScriptで曞かれた倧芏暡なプロゞェクトに取り組んでいたす。 蚱可されおいないナヌザヌをログむンペヌゞにリダむレクトするパスポヌト認蚌ミドルりェアが構成されおいたす。 これは次の方法で実装されたす。

import Server from "next-server/dist/server/next-server";
...
export const initPassport = (
    server: Express,
    app: Server,
    authStrategies: string[]
) => {
...
return app.render(req, res, AuthRoutes.LOGIN_PAGE);
...
}

次のバヌゞョンを9.0.5から9.3.7-canary.0に曎新した埌、 Serverタむプはnext-server/dist/...からではなく、䞊蚘のパスからむンポヌトできなくなりたした。

package.json内のすべおのラむブラリをアップグレヌドしたずきに、同じ゚ラヌが発生したした。 珟圚、私はすべおの問題なし@ツァむト/次-CSSでNextJS 9.2.2を䜿甚しおいたす。 䞀郚のバヌゞョンのラむブラリでメモリ䞍足の問題が発生するか、NextJSず䜕らかの理由で競合しおいるようです。

私の珟圚のパッケヌゞ構成は-

{
"dependencies": {
    "@zeit/next-css": "^1.0.1",
    "axios": "^0.19.2",
    "body-parser": "^1.19.0",
    "compression": "^1.7.4",
    "cookie-parser": "^1.4.4",
    "cookie-session": "^1.4.0",
    "express": "^4.17.1",
    "helmet": "^3.21.3",
    "json-server": "^0.16.1",
    "morgan": "^1.9.1",
    "next": "^9.2.2",
    "passport": "^0.4.1",
    "passport-local": "^1.0.0",
    "passport-strategy": "^1.0.0",
    "prop-types": "^15.7.2",
    "react": "^16.13.0",
    "react-dom": "^16.13.0",
    "react-mathjax2": "0.0.2",
    "shaka-player": "^2.5.10",
    "styled-components": "^5.0.1"
  },
  "devDependencies": {
    "@babel/cli": "^7.8.4",
    "@babel/core": "^7.9.0",
    "@babel/preset-env": "^7.8.6",
    "@babel/preset-react": "^7.8.3",
    "babel-jest": "^25.1.0",
    "babel-plugin-module-resolver": "^4.0.0",
    "babel-plugin-styled-components": "^1.10.7",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2",
    "jest": "^25.1.0",
    "react-test-renderer": "^16.13.0"
  }
}

特定の問題をラむブラリhttps://github.com/google/schema-dtsの䜿甚法に絞り蟌みたした

pages/から1ペヌゞを陀くすべおを削陀し、プロゞェクトがビルドされるたでコヌドを削陀しおから、埐々にコヌドを元に戻すこずで、問題をデバッグしたした。

倚分これはこのスレッドに出くわす誰かを助けたす🀷‍♂

next-source-mapsを䜿甚しお゜ヌスマップでアプリを構築しおいるずきに、CricleCIで同様の問題が発生したした

NODE_OPTIONS="--max_old_space_size=4096"はロヌカルで圹立ちたしたが、CircleCIでは、少なくずもそれを機胜させるには、リ゜ヌスクラスhttps://circleci.com/docs/2.0/configuration-reference/#resource_classをlargeに増やす必芁がありたす。正しく。

これは私たちのために働いた唯䞀のものです👍

かなり倧きなNext.jsアプリv9.3.6では、アプリの起動開発モヌドでヒヌプメモリの問題が発生し、ノヌド10でNODE_OPTIONS="--max_old_space_size=4096"を蚭定するず、ノヌド10で問題が発生したした。ノヌド12以降では、これはこのコミットず、コンテナヌに割り圓おられたメモリの量を考慮した別のコミットで凊理されたすLinuxのみafaik。

それが誰かを助ける堎合に備えお、議論に远加するだけです。
メモリ䞍足が発生しおいたしたが、私の堎合は䜕が問題であるかがわかりたした。

次のコヌドスニペットでは、 const Iconがたたたたundefinedある堎合、コヌドはコンポヌネントが有効かどうかをチェックする無限ルヌプに入りたす。

const iconMapping = {
  "flash-outline": FlashOutline,
};

export const Icon = ({ name }) => {
  const Icon = iconMapping[name];

  return <Icon />;
}

const Iconが定矩されおいないかどうかのチェックを远加するず、メモリ䞍足の問題が解消されたす。

...
  const Icon = iconMapping[name];

  if (!Icon) return null;
  return <Icon />;
}

これがこの問題の原因ずなったコヌドの䞀郚であるこずをどのようにしお理解したしたか

興味深いこずに、このコヌドをもう䞀床芋るず、実際には別のコヌドが衚瀺されたす
問題。 アむコンはコンポヌネントであり、アむコンの内郚でアむコンを参照しおいたした
自䜓。

私がそれを理解する方法は、䞻にコンポヌネントごずに分離するこずでした
どのコンポヌネントが原因であるかがわかるたで、問題を再珟しおみおください
それ。

朚曜、1820で2020幎5月21日には、Vivek_Neel [email protected]は曞きたした

それが誰かを助ける堎合に備えお、議論に远加するだけです。
私はメモリ䞍足を経隓しおいたした、そしおそれから私は䜕があったかを知りたした
私の堎合の問題

次のコヌドスニペットでは、constアむコンがたたたた未定矩の堎合
コヌドは、コンポヌネントが有効かどうかをチェックする無限ルヌプに入りたす。

const iconMapping = {
「flash-outline」FlashOutline、
};
export const Icon ={name}=> {
const Icon = iconMapping [name];

戻る ;
}

constアむコンが定矩されおいないかどうかのチェックを远加するず、
メモリの問題。

..。
const Icon = iconMapping [name];

Iconがnullを返す堎合;
戻る ;
}

これがこれを匕き起こしたコヌドの䞀郚であるこずをどのように理解したしたか
問題

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/zeit/next.js/issues/7929#issuecomment-632187103 、たたは
退䌚
https://github.com/notifications/unsubscribe-auth/ABA2CL7ZJQY5YPYJVCJMCODRSVIE7ANCNFSM4ICM4RAA
。

>>

私の電話から送信されたした

私が理解しおいる限り、Next.jsv9.0.0以降は倧芏暡なWebアプリケヌションのメモリを最適化できたせん。 プロゞェクトのサヌバヌ偎郚分のコンパむルを開始するず、ビルドプロセスがメモリ制限に達したす。

開発モヌドでは、ロヌカルサヌバヌは最初は問題ありたせんが、しばらくするず、割り圓おられたメモリが爆発し、メモリヒヌプ゚ラヌが衚瀺されたす。

コアチヌムの誰かがこの問題を認識し、問題のトリアヌゞを手䌝っおくれたせんか

私ず私のチヌムは、匷力なラップトップを䜿甚しおいおも、アプリケヌションをロヌカルでビルドできない堎合がありたす。 この問題はほが1幎前のものですが、この問題に関する明確な曎新はありたせん。 個人的には、アプリケヌションを2぀のサブNext.jsプロゞェクトに分割するこずだけが考えられたす。これは、い぀の日かCIでもアプリケヌションをビルドできなくなるのではないかず心配しおいるためですすでに匷力なアプリケヌションを䜿甚しおいたす。それを行うためのVM。

ここで悪者になっおすみたせん、ただ助けを求めおいたす。

線集Next.js 9.3.3に曎新したしたが、改善はありたせん

コアチヌムの誰かがこの問題を認識し、問題のトリアヌゞを手䌝っおくれたせんか

このスレッドで、完党な耇補を提䟛するか、アプリケヌションを提䟛するように䜕床もお願いしたした。 特定のアプリケヌションの問題を远跡するために、特定のアプリケヌションの内容を分析するこずはできたせん。
9.4 btwで゜ヌスマップの生成を倉曎したので、必ず最新バヌゞョンにアップグレヌドする必芁がありたす。

https://github.com/zeit/next.js/issues/7929#issuecomment -618297553のようなFWIWのケヌスは、アプリケヌション内で䜜成された無限ルヌプであり、これらをうたく怜出するこずはできたせん最終的にReactレンダリングを実行するため 。

私が理解しおいる限り、Next.jsv9.0.0以降は倧芏暡なWebアプリケヌションのメモリを最適化できたせん。 プロゞェクトのサヌバヌ偎郚分のコンパむルを開始するず、ビルドプロセスがメモリ制限に達したす。

あなたが耇補を提䟛しなかったこずを考えるず、私は私たち自身のアプリケヌションを参照するこずしかできたせん。

Next.jsで䜕癟䞇ものリク゚ストを実行し、実行するアプリケヌションには300以䞊のペヌゞがありたす。 チヌムからのメモリの問題は報告されおおらず、チヌムは1日を通しお倚くのペヌゞで䜜業しおいたす。

これは問題がある可胜性があるこずを吊定するものではないこずに泚意しおください。プロファむルできる明確な耇補たたはアプリケヌションを提䟛しない堎合、問題があるかどうかを远跡するこずは䞍可胜であるず蚀っおいたす。
たた、有料のコンサルティングを求めおいるわけでもないので、無料でアプリケヌションを芋おいきたす。

このスレッドで、完党な耇補を提䟛するか、アプリケヌションを提䟛するように䜕床もお願いしたした。 特定のアプリケヌションの問題を远跡するために、特定のアプリケヌションの内容を分析するこずはできたせん。

私がこの号を開いお以来、他の人々がここにリポゞトリを提䟛しおきたした。 そのため、問題が再開されたした。そのため、問題を再珟するにはリポゞトリが必芁であるこずを瀺すラベルがありたせん。

開いたたたにしおから

Webアプリケヌションがクラむアントに属し、゜ヌスコヌドが閉じおいるため、リポゞトリを提䟛できたせん。

9.4 btwで゜ヌスマップの生成を倉曎したので、必ず最新バヌゞョンにアップグレヌドする必芁がありたす。

この機胜はオプトむン/オプトアりトですか 問題を開いた埌ずっず前に、゜ヌスマップの生成を削陀したしたプラグむンを介しお行われたしたが、あたり圹に立ちたせんでした。

この問題が無効であるず思われる堎合は、閉じおください。 リポゞトリはずっず前に共有されおいたため、もう有効ではない可胜性がありたす。

トリアヌゞを支揎するこずはできたすが、ガむダンスが必芁です。

▲  styled-icons (master) ✗ yarn build:ci
yarn run v1.22.4
$ lerna run build
lerna notice cli v3.21.0
lerna info Executing command in 25 packages: "yarn run build"
lerna info run Ran npm script 'build' in '@styled-icons/styled-icon' in 6.6s:
$ tsc --project tsconfig.esm.json && mv dist/index.js dist/index.esm.js && tsc --project tsconfig.json
lerna ERR! yarn run build exited 1 in '@styled-icons/boxicons-logos'
lerna ERR! yarn run build stdout:
$ build-pack
Reading icon packs...
Error reading icons from pack
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

lerna ERR! yarn run build stderr:
error Command failed with exit code 1.

lerna ERR! yarn run build exited 1 in '@styled-icons/boxicons-logos'
lerna WARN complete Waiting for 4 child processes to exit. CTRL-C to exit immediately.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

耇補は実行できないので、このような堎合を避けるために、ここで報告したすべおの人に耇補も提䟛するように䟝頌したのはなぜですか。 たた、これらの問題が100同じになる可胜性は非垞に䜎いです。

この機胜はオプトむン/オプトアりトですか 問題を開いた埌ずっず前に、゜ヌスマップの生成を削陀したしたプラグむンを介しお行われたしたが、あたり圹に立ちたせんでした。

開発では゜ヌスマップは垞に有効になっおいたすが、評䟡゜ヌスマップに切り替えたした。

そのため、問題が再開されたした。そのため、問題を再珟するにはリポゞトリが必芁であるこずを瀺すラベルがありたせん。

より倚くのレポヌトが届き続け、耇補を求め続けたため、再床開きたした https 

このスレッドで提䟛されおいる耇補は2぀だけです。 1぀はNext.js now devメモリ消費ずは完党に無関係であり、もう1぀は実行/ビルドできたせん。

したがっお、なぜ私がもう䞀床完党な耇補を求めおいるのか、そうでなければこれを調査するこずは䞍可胜であり続けるでしょう。

Webアプリケヌションがクラむアントに属し、゜ヌスコヌドが閉じおいるため、リポゞトリを提䟛できたせん。

気軜に[email protected]に連絡しおください。NDAを蚭定できたす。これは、蚭定にかなりの時間がかかるこずを考えるず、コンサルティングを行う必芁があるこずを意味したす。特定のアプリケヌションを支揎し、クラむアント甚のアプリケヌションも構築しおいたす。

これらのアプリケヌションは、単にサむズの限界に達しおメモリ䞍足になり始めたず思いたす。 NODE_OPTIONS=--max-old-space-size=4096介しお、より倚くのビルドを実行する必芁がありたす。

たたは、新しいチャンク機胜を有効にするこずもできたす。

// next.config.js
module.exports = {
  experimental: { granularChunks: true }
}

これは私たちの問題を解決したせんでした、FYI。

この問題が組み蟌みの次回サヌバヌ起動で発生するかどうかは誰にもわかりたせんか
すなわち Next startではなくNODE_ENV=production node server.js" 

ビルドを生成した埌に問題が発生したす。 「nodeserver.js」を実行しおいるカスタムサヌバヌでは、その゚ラヌを受信しお​​プロセスが再起動するたでメモリが蓄積されたす。぀たり、キャッシュされたルヌトなどがすべお倱われるため、その埌ペヌゞに入る最初のナヌザヌにずっおは非垞に遅くなりたす。すべおのSSRが発生しおいたす。

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
0|profiles |  1: 0xa093f0 node::Abort() [node /home/projects/profiles/server.js]
0|profiles |  2: 0xa097fc node::OnFatalError(char const*, char const*) [node /home/projects/profiles/server.js]
0|profiles |  3: 0xb842ae v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node /home/projects/profiles/server.js]
0|profiles |  4: 0xb84629 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node /home/projects/profiles/server.js]
0|profiles |  5: 0xd30fe5  [node /home/projects/profiles/server.js]
0|profiles |  6: 0xd31676 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node /home/projects/profiles/server.js]
0|profiles |  7: 0xd3def5 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node /home/projects/profiles/server.js]
0|profiles |  8: 0xd3eda5 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node /home/projects/profiles/server.js]
0|profiles |  9: 0xd4185c v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node /home/projects/profiles/server.js]
0|profiles | 10: 0xd0830b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node /home/projects/profiles/server.js]
0|profiles | 11: 0x1049f4e v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node /home/projects/profiles/server.js]
0|profiles | 12: 0x13cf019  [node /home/projects/profiles/server.js]

これは私のpackage.jsonです

{
  "name": "profiles",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "node server.js",
    "build": "yarn relay && next build",
    "start": "NODE_ENV=production node server.js",
    "relay": "relay-compiler --src ./ --exclude '**/.next/**' '**/node_modules/**' '**/test/**'  '**/__generated__/**' --exclude '**/schema/**' --schema ./var/schema.graphql --artifactDirectory __generated__",
    "relay-get-schema-stage": "graphql get-schema --project sourcr --endpoint stage && yarn run relay",
    "relay-get-schema-prod": "graphql get-schema --project sourcr --endpoint prod && yarn run relay",
    "relay-get-schema-dev": "graphql get-schema --project sourcr --endpoint dev && yarn run relay",
    "pm2": "pm2"
  },
  "dependencies": {
    "@babel/plugin-proposal-class-properties": "^7.10.4",
    "@babel/plugin-proposal-decorators": "^7.10.5",
    "@babel/plugin-proposal-export-default-from": "^7.10.4",
    "@babel/plugin-proposal-optional-chaining": "^7.11.0",
    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    "@babel/plugin-transform-runtime": "^7.11.0",
    "@fortawesome/fontawesome": "^1.1.8",
    "@fortawesome/fontawesome-free-regular": "^5.0.13",
    "@fortawesome/fontawesome-free-solid": "^5.0.13",
    "@fortawesome/react-fontawesome": "^0.1.11",
    "@sentry/browser": "^5.21.0",
    "@svgr/webpack": "^5.4.0",
    "babel-loader": "^8.1.0",
    "babel-plugin-styled-components": "^1.11.1",
    "babel-plugin-transform-export-extensions": "^6.22.0",
    "bootstrap": "^4.5.2",
    "classnames": "^2.2.6",
    "file-loader": "^6.0.0",
    "formsy-react": "^1.1.5",
    "graphql": "^15.3.0",
    "jwt-decode": "^2.2.0",
    "mobx": "^5.15.5",
    "moment": "^2.28.0",
    "next": "9.5.1",
    "path": "^0.12.7",
    "pm2": "^4.5.0",
    "query-string": "^6.13.1",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-helmet": "^6.1.0",
    "react-player": "^2.6.0",
    "react-relay": "^10.0.1",
    "react-relay-network-modern": "^4.7.4",
    "react-relay-network-modern-ssr": "^1.4.0",
    "react-toastify": "^6.0.8",
    "relay-compiler": "^10.0.1",
    "relay-devtools": "^1.4.0",
    "relay-devtools-core": "^0.0.8",
    "relay-runtime": "^10.0.1",
    "sass": "^1.26.10",
    "sass-resources-loader": "^2.0.3",
    "siema": "^1.5.1",
    "transform-class-properties": "^0.1.0"
  },
  "devDependencies": {
    "babel-plugin-relay": "^10.0.1"
  }
}

暎走したnext buildのメモリ䞍足に察凊しおいる可胜性がある堎合は、 .babelrcたたはbabel.config.js削陀しおみおください。 Next.jsに関係のないプロゞェクトの別の郚分に.babelrcがあり、 next buildず䞀臎したせん。 私の状況では、問題はDockerでのみ発生しおいたした。 これからDockerfileを倉曎しお修正したした

FROM node:12
WORKDIR /app
COPY package.json package-lock.json /app/
ENV NODE_ENV production
RUN npm install
COPY . /app
RUN npm run build
RUN npm run next-build
EXPOSE 8081
CMD ["npm", "start"]

これに

FROM node:12
WORKDIR /app
COPY package.json package-lock.json /app/
ENV NODE_ENV production
RUN npm install
COPY . /app
RUN npm run build
# Let Next.js use its own Babel config
RUN rm .babelrc
RUN npm run next-build
EXPOSE 8081
CMD ["npm", "start"]

GitLab CIで共有ランナヌを䜿甚しおいる堎合、それらのランナヌはSIGABRTビルドプロセスを匷制終了し、次にこの゚ラヌをトリガヌしたす。 グルヌプランナヌに切り替えお、うたくいきたした。

next-transpile-modulesを䜿甚しおいる堎合、私の解決策は、次のようにresolveSymlinks蚭定v4.1.0以降を有効にするこず

// next.config.js
const withTM = require("next-transpile-modules")([
    "somepackage"
], {
    resolveSymlinks: true
})
module.exports = {
    ...withTM()
}

somepackageが「倧きすぎる」500kbから700kbず、ここで説明した問題に最初に遭遇したしたが、突然、すべおのメモリ8GBオプションでも詊しおみたしたではこれを凊理できたせんでした。

シンボリックリンクによっお匕き起こされるルヌプがいく぀かあり、メモリが指数関数的に肥倧化する原因になるず思いたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡