28

約 3.8 GB の RAM を搭載したマシンの node.js で XMPP サーバーを実行します。node を呼び出すときに渡すコマンド ライン パラメータは次のとおりです。 /opt/node/bin/node --max-old-space-size=3000 --trace-gc --trace-gc-verbose main.js

ただし、プロセスで 10 秒を超える gc の一時停止が頻繁に発生します (サーバーが GC を実行しているだけで、1 分を超える gc の一時停止が発生する場合もあります)。これが発生すると、プロセスは通常のメモリ消費量 (約 1 GB のヒープ使用量) になります。プロセスに使用できる約 2 GB または空き領域がありますが、プロセスはそれを使用せず、メモリを解放しようと 1 分を費やします。

--trace-gc-verbose オプションで指定された gc トレースを見ると、約 2 GB の空き領域が「ラージ オブジェクト スペース」としてマークされ、使用されていないように見えます。これは、大きなオブジェクトがそれほど多くないためです。そして、プロセスは「古いポインタ」と「古いデータ空間」のためにより多くのメモリを緊急に必要としていますが、「大きなオブジェクト空間」からのこの空きメモリは使用されません。

以下は、プロセス中に gc の長い一時停止があったときに gc が残したトレースです。

    

91635809 ミリ秒: マーク スイープ 968.8 (1039.0) -> 958.5 (1038.0) MB、1 / 410 ミリ秒 (+ 2287 ミリ秒、マーキング開始から 79 ステップで、最大ステップ 140.227051 ミリ秒) [アイドル通知: インクリメンタルをファイナライズ] [GC in old要求されたスペース]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 192、使用可能: 8388416
古いポインタ、使用済み: 633992112、利用可能: 10460240、無駄: 0
古いデータ スペース、使用済み: 315819248、使用可能: 149776、無駄: 0
コードスペース、使用済み: 5867936、使用可能: 1271392、無駄: 0
マップ空間、使用済み: 10257976、利用可能: 6384072、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91636499 ミリ秒: 清掃 965.5 (1038.0) -> 964.6 (1038.0) MB、17 ミリ秒 (最後の GC から 10 ステップで + 109 ミリ秒) [Runtime::PerformGC]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 41256、使用可能: 2055896
古いポインタ、使用済み: 628458688、利用可能: 15993664、無駄: 0
古いデータ スペース、使用済み: 315821792、使用可能: 147232、無駄: 0
コードスペース、使用済み: 5904256、使用可能: 1235072、無駄: 0
マップ空間、使用済み: 10263072、利用可能: 6378976、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91637979 ミリ秒: 清掃 966.6 (1038.0) -> 964.7 (1038.0) MB、1 ミリ秒 (最後の GC から 43 ステップで + 1404 ミリ秒) [Runtime::PerformGC]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 76736、使用可能: 2020416
古いポインタ、使用済み: 628458688、利用可能: 15993664、無駄: 0
古いデータ スペース、使用済み: 315845520、使用可能: 123504、無駄: 0
コードスペース、使用済み: 5980576、使用可能: 1158752、無駄: 0
マップ空間、使用済み: 10271416、利用可能: 6370632、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91639088 ミリ秒: マーク スイープ 965.2 (1038.0) -> 935.8 (1038.0) MB、1 / 369 ミリ秒 (+ 2235 ミリ秒、マーキング開始から 71 ステップ、最大ステップ 69.053955 ミリ秒) [アイドル通知: インクリメンタルをファイナライズ] [GC in old要求されたスペース]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 168、使用可能: 2096984
古いポインタ、使用済み: 641099768、利用可能: 3352584、無駄: 0
古いデータ スペース、使用済み: 315820152、使用可能: 148872、無駄: 0
コードスペース、使用済み: 5862976、使用可能: 1276352、無駄: 0
マップ空間、使用済み: 10256744、利用可能: 6385304、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91640987 ミリ秒: スカベンジ 966.4 (1038.0) -> 964.5 (1038.0) MB、1 ミリ秒 (最後の GC から 36 ステップで + 1275 ミリ秒) [割り当て失敗]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 100944、使用可能: 1996208
古いポインタ、使用済み: 627957504、利用可能: 16494848、無駄: 0
古いデータ領域、使用済み: 315830536、使用可能: 138488、無駄: 0
コードスペース、使用済み: 5951200、使用可能: 1188128、無駄: 0
マップ空間、使用済み: 10266376、利用可能: 6375672、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91641560 ミリ秒: 清掃 966.5 (1038.0) -> 964.8 (1038.0) MB、2 ミリ秒 (最後の GC から 29 ステップで + 481 ミリ秒) [Runtime::PerformGC]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 180712、使用可能: 1916440
古いポインタ、使用済み: 627957504、利用可能: 16494848、無駄: 0
古いデータ スペース、使用済み: 315871432、使用可能: 97592、無駄: 0
コードスペース、使用済み: 6019392、使用可能: 1119936、無駄: 0
マップスペース、使用済み: 10269848、利用可能: 6372200、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91642589 ミリ秒: マーク スイープ 965.9 (1038.0) -> 947.7 (1038.0) MB、1 / 371 ミリ秒 (+ 2369 ミリ秒、マーキング開始から 89 ステップで、最大ステップ 67.302002 ミリ秒) [アイドル通知: インクリメンタルをファイナライズ] [GC in old要求されたスペース]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 264、使用可能: 2096888
古いポインタ、使用済み: 639592840、利用可能: 4859512、無駄: 0
古いデータ スペース、使用済み: 315849408、使用可能: 119616、無駄: 0
コードスペース、使用済み: 5862976、使用可能: 1276352、無駄: 0
マップ空間、使用済み: 10257136、利用可能: 6384912、無駄: 0
セル スペース、使用済み: 175936、使用可能: 954304、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91643688 ミリ秒: 清掃 966.4 (1038.0) -> 964.6 (1038.0) MB、5 ミリ秒 (最後の GC から 21 ステップで + 356 ミリ秒) [ランタイム::PerformGC]。
メモリ アロケータ、使用: 1088446464、使用可能: 2124390400
新しいスペース、使用済み: 144088、使用可能: 1953064
古いポインタ、使用済み: 627748368、利用可能: 16703984、無駄: 0
古いデータ スペース、使用済み: 315864504、使用可能: 104520、無駄: 0
コードスペース、使用済み: 5990240、使用可能: 1149088、無駄: 0
マップ空間、使用済み: 10264248、利用可能: 6377800、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2123325184
91645276 ミリ秒: 清掃 966.5 (1038.0) -> 964.8 (1039.0) MB、2 ミリ秒 (最後の GC から 46 ステップで + 1520 ミリ秒) [割り当て失敗]。
メモリ アロケータ、使用: 1089495040、使用可能: 2123341824
新しいスペース、使用済み: 108192、使用可能: 1988960
古いポインタ、使用済み: 627748368、利用可能: 16703984、無駄: 0
古いデータ領域、使用済み: 315978760、使用可能: 1022200、無駄: 0
コードスペース、使用済み: 6039008、使用可能: 1100320、無駄: 0
マップ空間、使用済み: 10274216、利用可能: 6367832、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2122276608
91645577 ミリ秒: スカベンジ 966.6 (1039.0) -> 965.8 (1039.0) MB、3 ミリ秒 (最後の GC から 23 ステップで + 263 ミリ秒) [割り当て失敗]。
メモリ アロケータ、使用: 1089495040、使用可能: 2123341824
新しいスペース、使用済み: 516168、使用可能: 1580984
古いポインタ、使用済み: 627843088、利用可能: 16609264、無駄: 0
古いデータ領域、使用済み: 316550680、使用可能: 450280、無駄: 0
コードスペース、使用済み: 6039008、使用可能: 1100320、無駄: 0
マップ空間、使用済み: 10275280、利用可能: 6366768、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2122276608
91645645 ミリ秒: スカベンジ 967.3 (1039.0) -> 966.8 (1039.0) MB、5 ミリ秒 (最後の GC から 16 ステップで + 8 ミリ秒) [割り当ての失敗]。
メモリ アロケータ、使用: 1089495040、使用可能: 2123341824
新しいスペース、使用済み: 1012304、使用可能: 3182000               
古いポインタ、使用済み: 627968088、利用可能: 16484264、無駄: 0
古いデータ領域、使用済み: 316947304、使用可能: 53656、無駄: 0
コードスペース、使用済み: 6039008、使用可能: 1100320、無駄: 0
マップ空間、使用済み: 10275280、利用可能: 6366768、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2122276608
91645948 ミリ秒: 清掃 969.8 (1039.0) -> 968.6 (1041.0) MB、9 ミリ秒 (最後の GC から 35 ステップで + 188 ミリ秒) [割り当て失敗]。
メモリ アロケータ、使用: 1091592192、使用可能: 2121244672
新しいスペース、使用済み: 1032320、使用可能: 3161984
古いポインタ、使用済み: 628219008、利用可能: 16233344、無駄: 0
古いデータ スペース、使用済み: 318537928、使用可能: 526904、無駄: 0
コードスペース、使用済み: 6039264、使用可能: 1100064、無駄: 0
マップ空間、使用済み: 10276232、利用可能: 6365816、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2120179456
91646093 ミリ秒: 清掃 971.6 (1041.0) -> 970.5 (1042.0) MB、13 ミリ秒 (最後の GC から 30 ステップで + 36 ミリ秒) [Runtime::PerformGC]。
メモリ アロケータ、使用: 1092640768、使用可能: 2120196096
新しいスペース、使用済み: 2044456、使用可能: 6344152
古いポインター、使用済み: 628437424、使用可能: 16014928、無駄: 0
古いデータ スペース、使用済み: 319366376、使用可能: 730392、無駄: 0
コードスペース、使用済み: 6039264、使用可能: 1100064、無駄: 0
マップ空間、使用済み: 10276232、利用可能: 6365816、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2119130880
91646306 ミリ秒: 清掃 976.5 (1042.0) -> 974.7 (1044.0) MB、1 / 14 ミリ秒 (最後の GC から 67 ステップで + 114 ミリ秒) [割り当ての失敗]。
メモリ アロケータ、使用: 1094737920、使用可能: 2118098944
新しいスペース、使用済み: 2064112、使用可能: 6324496
古いポインタ、使用済み: 630440024、利用可能: 14012328、無駄: 0
古いデータ スペース、使用済み: 321653384、使用可能: 507256、無駄: 0
コードスペース、使用済み: 6055936、使用可能: 1083392、無駄: 0
マップ空間、使用済み: 10278192、利用可能: 6363856、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2117033728
91646386 ミリ秒: 清掃 980.6 (1044.0) -> 979.2 (1046.0) MB、12 ミリ秒 (最後の GC から 64 ステップで + 10 ミリ秒) [割り当て失敗]。
メモリ アロケータ、使用: 1096835072、使用可能: 2116001792
新しいスペース、使用済み: 4127736、使用可能: 12649480
古いポインタ、使用済み: 631182984、利用可能: 13269368、無駄: 0
古いデータ領域、使用済み: 323586008、使用可能: 638504、無駄: 0
コードスペース、使用済み: 6055936、使用可能: 1083392、無駄: 0
マップ空間、使用済み: 10278192、利用可能: 6363856、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2114936576
昇格率が高いため、新しいスペース サイズは制限されています: 1 MB
91646810 ミリ秒: マーク スイープ 979.2 (1046.0) -> 973.2 (1049.0) MB、1 / 422 ミリ秒 (+ 2500 ミリ秒、マーキング開始から 303 ステップで、最大ステップ 0.122070 ミリ秒) [StackGuard GC 要求] [要求された古い領域の GC ]。
メモリ アロケータ、使用: 1099980800、使用可能: 2112856064
新しいスペース、使用済み: 192、使用可能: 1048384
古いポインタ、使用済み: 636894816、利用可能: 9621408、無駄: 0
古いデータ領域、使用済み: 325256448、使用可能: 0、無駄: 0
コードスペース、使用済み: 5860928、使用可能: 1278400、無駄: 0
マップ空間、使用済み: 10257976、利用可能: 6384072、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2111790848
91646825 ミリ秒: 清掃 974.2 (1049.0) -> 979.0 (1049.0) MB、7 ミリ秒 [割り当てエラー]。
メモリ アロケータ、使用: 1099980800、使用可能: 2112856064
新しいスペース、使用済み: 257960、使用可能: 790616
古いポインタ、使用済み: 635948464、利用可能: 10567760、無駄: 0
古いデータ領域、使用済み: 325256448、使用可能: 0、無駄: 0
コードスペース、使用済み: 5873440、使用可能: 1265888、無駄: 0
マップ空間、使用済み: 10258536、利用可能: 6383512、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2111790848
91646834 ミリ秒: スカベンジ 979.7 (1049.0) -> 980.0 (1049.0) MB、2 ミリ秒 [割り当てエラー]。
メモリ アロケータ、使用: 1099980800、使用可能: 2112856064
新しいスペース、使用済み: 257968、使用可能: 790608
古いポインタ、使用済み: 635671408、利用可能: 10844816、無駄: 0
古いデータ領域、使用済み: 325256448、使用可能: 0、無駄: 0
コードスペース、使用済み: 5873440、使用可能: 1265888、無駄: 0
マップ空間、使用済み: 10258536、利用可能: 6383512、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2111790848
91646842 ミリ秒: スカベンジ 980.7 (1049.0) -> 980.6 (1049.0) MB、2 ミリ秒 [割り当てエラー]。
メモリ アロケータ、使用: 1099980800、使用可能: 2112856064
新しいスペース、使用済み: 257960、使用可能: 790616
古いポインタ、使用済み: 635493872、利用可能: 11022352、無駄: 0
古いデータ領域、使用済み: 325256448、使用可能: 0、無駄: 0
コードスペース、使用済み: 5873440、使用可能: 1265888、無駄: 0
マップ空間、使用済み: 10258536、利用可能: 6383512、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2111790848
91646849 ミリ秒: 清掃 981.3 (1049.0) -> 981.2 (1049.0) MB、1 ミリ秒 [割り当てエラー]。
メモリ アロケータ、使用: 1099980800、使用可能: 2112856064
新しいスペース、使用済み: 257968、使用可能: 790608
古いポインタ、使用済み: 635981640、利用可能: 10534584、無駄: 0
古いデータ領域、使用済み: 325256448、使用可能: 0、無駄: 0
コードスペース、使用済み: 5873440、使用可能: 1265888、無駄: 0
マップ空間、使用済み: 10258536、利用可能: 6383512、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2111790848
91646863 ミリ秒: スカベンジ 981.9 (1049.0) -> 981.6 (1051.0) MB、1 ミリ秒 [割り当てエラー]。
メモリ アロケータ、使用: 1102077952、使用可能: 2110758912
新しいスペース、使用済み: 257960、使用可能: 790616
古いポインタ、使用済み: 637013288、利用可能: 10534872、無駄: 0
古いデータ領域、使用済み: 326288384、使用可能: 0、無駄: 0
コードスペース、使用済み: 5873440、使用可能: 1265888、無駄: 0
マップ空間、使用済み: 10258536、利用可能: 6383512、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2109693696
91651639 ミリ秒: マーク スイープ 981.6 (1051.0) -> 924.7 (1051.0) MB、1 / 4775 ミリ秒 [最後の手段 GC]。
メモリ アロケータ、使用: 1102077952、使用可能: 2110758912
新しいスペース、使用済み: 96、使用可能: 1048480
古いポインタ、使用済み: 626794192、利用可能: 20753968、無駄: 0
古いデータ領域、使用済み: 275760200、使用可能: 50528184、無駄: 0
コードスペース、使用済み: 6182208、使用可能: 957120、無駄: 0
マップ空間、使用済み: 10257808、利用可能: 6384240、無駄: 0
セル スペース、使用済み: 176192、使用可能: 954048、無駄: 0
ラージ オブジェクト スペース、使用済み: 51413600、使用可能: 2109693696
91663655 ミリ秒: マーク スイープ 924.7 (1051.0) -> 924.7 (1050.0) MB、1/12015 ミリ秒 [最後の手段 GC]。
メモリ アロケータ、使用: 1101029376、使用可能: 2111807488
新しいスペース、使用済み: 0、使用可能: 1048576
古いポインタ、使用済み: 626169464、利用可能: 21378696、無駄: 0
古いデータ領域、使用済み: 275759960、使用可能: 49496488、無駄: 0
コードスペース、使用済み: 5850624、使用可能: 1288704、無駄: 0
マップ空間、使用済み: 10257808、利用可能: 6384240、廃棄物:                 


v8 のメモリ管理をより適切に構成するためにできる調整はありますか? ここで何が役立つかについてのアイデアはありますか?

4

1 に答える 1