2018年2月18日日曜日

【Node.js】Node学園 29時限目に登壇してくるけど質問ある?

今週の木曜に開催されるNode学園 29時限目
イベントが発表されたときから参加しようと思っていたのですが、先週ふと思い立ちました。

どうせなら登壇してやれ。

さっそく主催の2人に「LT枠空いてる?」と連絡を取ったところ、「15分枠ならね!」とお返事が。

( ゚д゚)?

節子、それLT枠やない。一般枠や。

いやいやそれでもせっかくのチャンス。なんとかして15分しゃべります。おたのしみに。

2018年2月11日日曜日

【Node.js】リソースマネージャーといふもの

これまで、Node.jsでリクエストが切断されたときの処理レスポンス完了後の処理について説明してきました。

そこから導き出されたのは、PerlとかPHPと違って、リソースは勝手に解放されないからちゃんと解放しろよというもの。
正確には言語の違いというよりアーキテクチャの違いですけどね。

そして前回、Node.jsのリクエスト内でリソースを保持する方法と解放の仕方を説明しました。

今回はこれまでのまとめとして、前回の最後に書いた「リクエストが飛ぶと問答無用でリソースを確保するんじゃなくて、必要なときにだけ確保するには?」の実装例(間違いと正しい作法)を解説します。

2018年2月4日日曜日

【Node.js】おまいらちゃんとリソース解放してますか

先月の記事で、クライアントからの接続が途中で切れてもレスポンスを返し終わっても、処理自体はまだ続くことがわかりました。つまり、こんな注意が必要。
  • (意図しない)無限ループのようにCPUを専有する処理があった場合、クライアントからの接続を切っても専有が解除されるわけではない。つまりそういう処理を作り込んでしまったらどうしようもない
  • DBの接続やファイルハンドルのようなリソースは、処理完了時にきちんと解放する必要がある
前者も設計やコードの時点で気をつけてもらわないとダメですが、問題なのが後者。

従来のスクリプト系言語では、リソースはリクエストの処理が終わったら勝手に解放されるから特に何もしなくてよかったりします。
その感覚でNode.jsを触ると、知らないうちにDBの接続数が異常に増えていたりします

さて、どう対処しましょうか。