mrubyおはようございます。先週の実家生活は、初日から次男がロタにかかるなど、どうなることかと心配されましたが、無事乗り切る事が出来、自宅に帰って4月からの新しいクラスで息子たちは保育園生活を始めました。@kjunichiです。背景libtrusterdでldd機能の負荷テストをしたらNG。このldd機能をマージしたのだったものの、h2loadで負荷テストを行うと、途中から動かなくなる。手元のOSXではh2loadで、リクエストを増やしていったところ、260リクエスト前後でNGとなった。黙ってForkするとforkすると、親に子プロセスの終了時にシグナルが通知される。waitpidで、子プロセスのプロセスIDを指定すると、この通知を処理して、子プロセスが完全に終了する。子プロセスが完全に終了することが出来ず、親プロセスが終了するまでいつまでも残る。今回はサーバーの処理のため、親プロセスはなかなか終了しない、そうなると、リクエストを受け付けるたびに子プロセスが増えていき、OSの許容するプロセス数の上限に達して、エラーとなる。親に子プロセスの終了時にシグナルが通知というこの通知を、あらかじめ受け取らない設定が実はある。:SIG_IGN)のように、子プロセスからのシグナルを無視するようにした。こちらの記事を書かれた方のお蔭でした。ありがとうございます。実装箇所を探すxquoteの記事にも書かれていますが、仕組みをmrubyに組み込んだだけで、これを実装している箇所を調べる必要あった。ptで以下のようなコードを検索して、定義しているモジュールを探した。}endmruby-ioのkernel.rbであることをつき止めた。mruby-ioにissueを挙げるmrubyの世界での標準は英語のようなので、英作文を頑張り、少なくとも作者の方には通じて、早速対応頂けた。英文を読めばわかるが、自分は相当勘違いして、的外れな指摘ばかりしていたが、丁寧に回答して頂き、Fixまで行っていただけた。ありがとうございました。https://github.com/iij/mruby-io/issues/37まとめそもそも、ベンチマークなどあまり気にしない行き当たりばったりの超現場主義なんですが、このところ、libtrusterdのメモリ使用量が増加していく問題を調査しており、この一環で、h2loadの向き先をたまたまldd機能に指定して今回の発見やその後の対応に繋がりました。「forkすると、親に子プロセスの終了時にシグナルが通知される。」に関しても、そのうち記事にまとめたいのだが、kqueueでtrusterdの設定ファイルの監視を行い、自動リロードする機能をlibtrusterdに実装している際に、目にしたドキュメントに書かれていたことで、たまたまこれが、今回の問題と結びつけることが出来た。06:51Tweet広告を非表示にする関連記事2017-06-25WindowsでDLLを作ろうとしてmrb_context_runの歴史を調べたおはようございます。ここ数日夕方になると熱が上がる次男、昨...2016-11-08mruby-ioでclose_writeを実装したが、不要だった件こんばんは、週末は、土日とも近所の大きな公園に長男が自転車...2016-10-04mrubyのFile.openをちょっと調べたメモおはようございます。最近、兄弟で、意気投合して、結構な時間...2015-07-17libtrusterdをRustで動かしたおはようございます。奥さん出張中の息子達との実家生活もそろ...2015-07-032015年第2四半期振り返りおはようございます。»プロフィールid:kjw_junichiブログ名の通りです。(51)はてなブログをはじめよう!kjw_junichiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。