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の接続数が異常に増えていたりします

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

2018年1月28日日曜日

そろそろこいつを出しておくか

今週の土曜は節分ですね。

節分といえば恵方巻き。

恵方巻きといえば…

2018年1月21日日曜日

【Node.js】レスポンスを返した後の処理はどうなるのっと

前回は、リクエストを処理中にクライアントからの接続が切れた場合、残りの処理がどうなるのかを調べました。

今回は、レスポンスを返した後の処理について調べてみます。

2018年1月14日日曜日

【Node.js】クライアントからの接続が切れたリクエストはどうなるのっと

ブラウザでアクセスしたページの応答が遅かった場合、タブを閉じたりして接続を切るじゃないですか。その後のサーバ側の動作がふと気になったので調べてみました。

いわゆるLAMPスタックのように、1リクエストに1プロセスとか1スレッドを使うアーキテクチャの場合は簡単なんですよ。
プロセスやスレッドをぬっころすだけで全部終わるので。

Node.jsはシングルプロセス・シングルスレッドのイベント駆動だからいろんなリクエストのイベントハンドラやコールバック関数が混在(呼び出し待ち)しているわけで、その場合にうまく該当リクエストの関連イベントだけぬっころしているのかな、と。

2018年1月7日日曜日

【Node.js】Dynamic importをウェブサービスで使うときの注意点

あけましておめでとうございます。今年もよろしくおねがいします。

去年のクリスマスイブに書こうとしていた、V8の最新版に関連するネタを新年最初の記事にします。