サーバーで、chrome以外で、webページのスクショを撮る
Chrome重すぎ!!!
事の発端
VPSを契約して運用してるのですが、安いプランのためメモリ1GBしかないんですよね。だからメモリを節約してほそぼそと暮らす必要があります。
そんな中、マイコンでwebページのスクリーンショットを表示したいということになりまして、調べたところGoogle chromeのheadlessモード(コマンドで実行できるchrome的なもの)を使うとwebページのスクリーンショットが撮れると書いてあり、やってみました。
Google Chrome --headless メモリ不足
cronで毎時特定の時刻にchromeのheadlessモードでwebサイトのスクショを撮っていたわけなのですが、その時刻になると運用してるwebサイトすべてが重くなるという超絶厄介者でした。これは困ったものです。
あれ、サイトが重いな。。あ……スクショ撮影中か……って。
さ ら に
topして見てるとスクショを取り終わった後もchromeはずっと常駐してメモリを食いつぶしています。やめてくれ………
諦め、そして希望の光「pageres」
もうスクショ重くなるのはやむをえないことだと半ばあきらめていました。毎事特定の時刻にちょっと重くなるだけだし。まぁいっかって。
でもそれができない状況になりました。自作の日記webアプリの登場です。自分で使っていて、1ユーザーとしてこの遅さは許せない!そして、統計更新押すと500エラーになる!!!許すまじ。ってことで、chromeとお別れする方針を決めます。
マイコンごとさよならしてスクショ取る必要性をなくすとか、外部APIで拾ってくるとか、考えていたところ「pageres」というnodeでインストールできるwebページキャプチャツールが見つかりました。これだと従来のcron実行でchromeでやっていた部分を置き換えられそうです。
しかもこれ、ブラウザインストールされてなくても実行できるんです。nodeさえあればOKです。
↓こちら公式リポジトリ
https://github.com/sindresorhus/pageres-cli
メモリもchormeと比べると比べ物にならないくらい消費量少なく、なにより終了したら常駐しません(本来当たり前で、chromeがおかしいのですが……)
これで、幸せなwebサイトスクショライフを送ることができるようになりました!!
終わり。
と言いたいところですが、やっぱり重くなってしまうことは避けられず、毎時特定の時間はブログサイトも日記webアプリも重くなっています。
サーバー移転を検討しています。メモリ1GBで複数サイト運用は無理がありますね……
後日訂正
pageresも裏側でchromiumu動かしているみたいで、激重で、しかも!!裏側でchromiumuがゾンビプロセスとして残ってしまいました……
結局変化なしです……
おまけ
ところで、この経緯になった自作の日記アプリ、気になりませんか?
自然言語処理による統計機能までついているんです。すごくないですか?
「かどで日記」って言うんです。鋭意作成中で、ベータ版として一般にも公開されています。
もしよかったら使ってみてください!