@kyanny's blog

My life. Opinions are my own.

セマフォってなんだ? => 調べたけど結局よくわからず

一度に 50 プロセスくらい起動して、各々の子プロセスがどこかからデータをかき集めてきて、 IPC::Shareable で作ったプロセス間で共有できる変数に集めてきたデータを突っ込んで、親プロセスが最後にデータを再集計する、というスクリプトを書いて走らせておいて、終わった頃にみてみたらこんなエラーが出て、途中で止まっていた。

Could not create semaphore set: No space left on device

なんだこりゃ、とぐぐってみると、セマフォ?とかいうものが足りなくなるとこういうエラーが症状として表れるらしい。 httpd の再起動を繰り返していてこのエラーに遭遇する人が多いようだ。

で、セマフォって何?と思って セマフォとは - IT用語辞典 を読んでみるも、よくわからず。共有してた変数が使ってるメモリが足りなくなった、とかとは違うのかな。そんな巨大なデータを入れておくものでもないし(多くても数十キロバイト程度のはず)。マルチプロセスでどうこうやるプログラムを今まで書いたことがないので、いろいろ知らないことに遭遇するな。