タグ

forkに関するissmのブックマーク (8)

  • pm2のforkモードで動的にCPUと同じ数のhttpサーバを起動する - Qiita

    目的 pm2のclusterモードは便利ですが、リクエストのロードバランスはNginxなどで行いたい場合があります。 pm2のforkモードでCPUの数に応じて動的にサーバプロセスを立ちあげる方法について調べました。 clusterモードでは pm2のclusterモード(Node.jsのclusterモジュール)はportを割り当てられるのはマスタープロセスだけなので、 以下の用にinstances=0としてマスタープロセス用の設定を書けば、 portを割り当てられたマスタープロセス1個と、実際にリクエストを処理するワーカープロセスがCPU数起動します。

    pm2のforkモードで動的にCPUと同じ数のhttpサーバを起動する - Qiita
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    issm
    issm 2014/08/21
    意図しない kill -1 やばい.
  • #kyotopm 04 Hackathonを開催して、Cinnamonの並列化に取り組んでいました - $shibayu36->blog;

    Kyoto.pmを久々に開催しました。今回はハッカソンをしました。Kyoto.pm 04 Hackathonを開催します - $shibayu36->blog; 株式会社はてなの畳で集まってハッカソンしました。 ビール飲んでました。 あとなぜかCocoa関西と同時開催でした。 やったこと 僕自身はCinnamonのコマンド実行並列化というのをやっていました。Parallel::ForkManagerのrun_on_finishを使って、とりあえず並列に実行するというところまでは簡単に行けました。やり方についてはperlでforkしたプロセスとの通信を簡単に行う方法が知りたい - $shibayu36->blog;にも書きました。 あと並列処理をやっていて、さて試すかーと思った時にサーバを一台しか持っていないことに気づき、どうしようというふうになりました。それで今回はvagrantでマルチV

    #kyotopm 04 Hackathonを開催して、Cinnamonの並列化に取り組んでいました - $shibayu36->blog;
  • perlでforkしたプロセスとの通信を簡単に行う方法が知りたい - $shibayu36->blog;

    今作っているもので、「forkした後、子プロセスの実行の結果を最後に親プロセスに通知し、親プロセスは子プロセス群の状態をまとめて取得する」、ということがやりたいのですが、モダンかつ簡単な方法って何があるんでしょうか? 具体的には use Parallel::ForkManager; $pm = Parallel::ForkManager->new(5); foreach $data (@all_data) { # Forks and returns the pid for the child: my $pid = $pm->start and next; # ... do some work with $data in the child process ... # 実行結果のサマリーを親プロセスに投げておく $pm->finish; # Terminates the child proc

    perlでforkしたプロセスとの通信を簡単に行う方法が知りたい - $shibayu36->blog;
  • プロセスとかスレッドとかプロセス間通信とかについて書く場所

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    プロセスとかスレッドとかプロセス間通信とかについて書く場所
  • CoW 要点まとめ

    CoW とは CoW = Copy-On-Write [ CoW - Wikipedia ] プロセスのコピーを作成 (fork) するとき、書き換えることのないメモリページは、両方のプロセス(元のプロセスと生成されたプロセス)で共用し、書き換える可能性のあるメモリページは、新たなメモリページを割り当ててコピーを作成する 鉄則 fork するプロセスを生成する場合、親子間でメモリ共有した方が良い forkする前に確保したメモリ領域は子プロセスとの間で共有される 共有されたメモリ領域に対して書き込みを行うと共有は解除(コピー)される forkした後に確保したメモリ領域は子プロセスごとに確保される(共有されない) どのプロセスでも同じように参照するだけの(書き換えない)データは、fork前に確保して共有した方が全体でのメモリ使用量を小さく保てる。つまり、fork 数を多くしたりできる。そして、

    CoW 要点まとめ
  • DBIのconnect_cachedのいろいろ - $shibayu36->blog;

    最近DBへの接続をリクエスト単位ではなくリクエストを処理するプロセス単位(Starmanのworkerプロセス単位)でキャッシュしたいということがあって、DBIのconnect_cachedを使うことになった。Scope::Container::DBIでももしかしたら出来るのかもしれないけど、とりあえずconnect_cachedで実装した。そこでいろいろはまったのでメモ。 connect_cachedについて perldocに connect_cached is like "connect", except that the database handle returned is also stored in a hash associated with the given parameters. If another call is made to connect_cached wit

    DBIのconnect_cachedのいろいろ - $shibayu36->blog;
  • DBIとforkの関係 - heboi blog

    実際ググれば正解はいっぱい出てくるしここに自分もコメントで書いてたりしていまさら書く必要もないかなと思ってたけど一応自分のブログでもまとめておくということで。 一般的な解 DBIx::ConnectorとかDBIx::Handler経由でかならず$dbhを取得してからDBIを使う。 もしくはfork-safeなORM(DBIx::Class, DBIx::Skinny, Teng)を使う。 DBIを直接使っている場合 一般的なコネクションを保持するクライアントと同様にDBIもforkした子供が親のコネクションをそのまま使うことはバグの原因になります。特にトランザクションの処理等で重大な問題が起こる可能性がある。 解決策は、 DBIのコネクションを親で作らないで、子供で独自に作る 親で作ってしまったコネクションを子供が安全にDESTROYし、再接続する のどちらかになります。ここで問題は2で

    DBIとforkの関係 - heboi blog
  • 1