Hexo heap out of memoryでソース生成できない状況を解決する

Share on:

この記事は約3 分で読めます。

目次

Hexoheap out of memoryエラーが出てしまい、HTMLソースを生成できなくなってしまいました。

このエラーはヒープサイズ不足(メモリ不足)ということなのですが、よくある解決方法に以下のものがあります。

/プロジェクト名/node_modules/hexo/node_modules/hexo-cli/bin/hexo

1#!/usr/bin/env
2
3↓ 書き換える
4
5#!/usr/bin/env node --max_old_space_size=8192
67#!/usr/bin/env node --optimize_for_size --max_old_space_size=8192 --gc_interval=10

これですが、メモリの量をいくら調整しても上図のようにエラーが発生します。

詰みました。。。

ヒープサイズ不足の原因

記事につけたタグが増えすぎたことにより、Tagページ生成(配列処理?)で落ちていました。

そこで、hexo-generator-tagモジュールを削除したところ無事にhexo gできました。

ただし、この場合、Tagのアーカイブページが作成されなくなりますので、タグをクリックされたとき404ページが表示されてしまいます。

今後の対策

hexo-generator-tagとの決別

上記の通り、hexo-generator-tagモジュールが原因なので、Tagページ生成はあきらめる。

もしくは独自のTagページ生成プログラムを開発する。

記事にタグを付けない

今後、更にタグが増えることを想定すると、いっそ、記事にタグを付けないでおこうか。

静的サイトジェネレーターを乗り換える

Node.jsの勉強も兼ねてHexoを選びましたが、ブログ作成に限定すれば、Hexoでなくても静的ファイルを生成してくれるものであればいいのです。

(ちなみに動的なWordPressに嫌気が差したHexoへの転身組です。。。)

HugoGatsbyといったところが良さげですが、記事を修正したりテンプレをカスタマイズするとなると、それなりの記法を覚えないといけないので、二の足を踏んでいます。

それでも訪問者様のことを考えるとユーザーフレンドリーなブログに仕上げることも大切かなとも思いますので、**悩み考える前に動け!**ということで。

まとめ

執筆時点ではまだ明確な方針を打ち出せないでいますが、当面、hexo-generator-tagモジュールを削除してブログを公開しつつ、あまりによろしくない状況(アクセスが減る、さらにhexo gが重くなるなど)になるようでしたら、HugoやGatsbyに乗り換えようと思います。

(追記 2019/05/15 17:14)

デフォルトテーマlandscapeに変更したところ、19分かかりましたがエラーなく静的ファイルを生成できました。

現在のテーマは相当カスタマイズしているので、テーマの見直しをまず行ってみようと思います。

(追々記 2019/05/16 14:23)

テーマをghost-casperに変更しました。

変更直後は30秒くらいで静的ソースを吐き出してくれていましたが、タグやタグクラウドを取り入れると1分くらい生成時間が伸びました。

ちょっとタグ多すぎかな。。。タグクラウドも雑多で見栄えも悪いのでCSSで折りたたみ式にしました。

あと生成時の自前の処理がちょっと複雑すぎる気もしてます。
(記事の修正が面倒なのでいろいろテンプレに記載しています。)

ともあれテーマを変更して生成もできて、サイトも少し高速化したのでしばらくghost-casperで行こうと思います。