環境変数SERVER_NODE_OPTIONSに--max-old-space-size=100を設定した後の経過観察
背景
Cosenseのweb dynoのメモリ使用量が爆発してるけどなぜかなんともないから始まった作業
Node.js clusterのmasterプロセスにも--max-old-space-sizeを指定するを実装、リリースした (2025/11/7 23:32)
設定値
SERVER_NODE_OPTIONS --max-old-space-size=100
CLUSTER_WORKER_NODE_OPTIONS --max-old-space-size=400
最初200だったが100に下げたshokai.icon (2025/11/8 00:45)
OSもメモリ使うし
Nodeプロセスの中でも、この値はメモリ使用量のごく一部でしかない
--max-old-space-sizeで説明している通り
2025/11/8(土) 15:24
24時間のメモリ使用量
https://scrapbox.io/files/6925778804b9136e10fb9873.png
swapを含めると1GBを超えてしまう事は変わらないなshokai.icon
web系の全てのプロセスに--max-old-space-sizeを設定し、old spaceの取得はかなり制限されているが、それ以外の所でswapが確保され続けているという事だ
レスポンス時間・メモリ使用量・スループット・CPU仕様率の7日間の指標
https://scrapbox.io/files/6925778bb4469980fab9f42f.png
特に悪化したりはしていない
Node.js内部の指標
https://scrapbox.io/files/6925778e73eb738aa8f0d2cc.png
環境変数CLUSTER_WORKER_NODE_OPTIONSに--max-old-space-size=512を設定した後の経過観察#6925748f0000000000cc755eで改善した部分は、そのまま維持されている
2025/11/2 17時以降の部分
2025/11/9(日) 17:19
7日間のメモリ使用量
https://scrapbox.io/files/692577b185112c87a9829e22.png
24時間のメモリ使用量
https://scrapbox.io/files/69256e1485112c87a9821acf.png
あまりにも綺麗な一次関数になっている
日曜の朝3時なので、リクエストも少ない
正確には、普通の人間によるリクエストが少ない
なぜ、ぜんぜんリクエストもないのに、メモリ使用量が経過時間に応じて一次関数的に増えていくのか?
stagingはそうはなっていないんだよな
https://scrapbox.io/files/692577b52f80ed3c8c20ec58.png
金曜夜中時点で既に同じコードと、ほぼ同じ設定値でデプロイしている
stagingとproductionの違いはなんだろう
dyno数
stagingも、dyno数を50に増やしてみたらわかるかもshokai.icon
dyno数に応じた処理、例えば@socket.io/redis-adapterとか
DBのサイズ
人間以外の、botによるアクセスの多さ
ReDoSみたいなのとか
expressのファイル配信部分がずっとキャッシュを作ってる?
ぜんぜんわからないので、とりあえずCosenseのexpressを4から5に更新する、やっておこうshokai.icon
ぜんぜんわからない
2025/11/10(月) 03:33
https://scrapbox.io/files/692577bb7d38537200b5199c.png
次:scrapbox.ioのみ時間経過でメモリ使用量が増加する原因を、Codex CLIとともに探る