HUGOで数万ページをビルドするならwhereを使わない方がいい
HUGOで数万ページのサイトをビルドしようとしたら、1時間以上かかったので原因を調べて、比較検証をしてみました。
公開日:2020年3月14日
テスト環境
HUGOバージョン
Hugo Static Site Generator v0.64.1/extended darwin/amd64 BuildDate: unknown
HUGOはbrewでインストールしています。
検証マシン
マシンスペックは下記の通りです。
項目 | 詳細 |
---|---|
OS | macOS Mojave |
CPU | 2.81 GHz Intel Core i5(第8世代) |
メモリ | 16GB |
ストレージ | NVMe 128GB |
そこそこのスペックなので、マシンスペックが足を引っ張っていることはないと思います。
テスト
では実際にテストしてみます。
where有無の比較
contentの中身はそのままで、whereメソッドで関連記事を出すところを削除した場合と比較しました。
件数が数万件だと時間の無駄なので、2000記事まで減らしてテストしてみました。
ビルド時間 | |
---|---|
whereあり | 66,486 ms |
whereなし | 1,898 ms |
概ね1/30まで削減されました。
paginateなど他の一覧生成部分は何も変更させていないので、いかにwhereを使ったデータ取得が重いのかというのがわかります。
2万ページの出力もしてみた
ちなみに、この状態で記事数を2万まで増やすと、「huog sever」でのビルド時間は「140,057 ms」でした。単純に10倍とはいきませんでしたね。
ちなみに、このファイル数になると、hugo serverをすると、
Error: listen tcp 127.0.0.1:1313: socket: too many open files
となって、簡易サーバーが落ちます。
通常のブログでも長期間運営されている方は、数万ページという場合もあると思うので、whereメソッドで関連ページなどを出している場合は注意が必要ですね。
この規模のサイトになると、Netlifyなどのサーバーレスサービスでビルドをしていると、おそらく月のクオータをすぐに使い果たしてしまうので、ローカルかスペック高めのサーバーを借りて別にビルドした方が良さそうです。
新着ノート
-
NUXT3
公開日:2023年2月16日
-
NUXT3
公開日:2023年1月30日
新着コード
-
Vue.js
公開日:2022年4月18日
-
Vue.js
公開日:2022年4月13日