動かせるものが少ないと単純にどんな挙動になるのかな~と思って好奇心で実験してみることにしました。とは言うものの、実験としてはかなり大ざっぱだし、煮詰める部分はまだまだあるけど、とりあえずざっくりやってみたってもんです。
今日はもしもシリーズというその昔ドリフ大爆笑という番組があって、その中であったコントのシリーズです。
まずはプロセスの数を絞るのにゃ。
参考サイト
響雲 Linux スレッド数設定
今回はリブートしたらもとに戻るように “sysctl -n kernel.threads-max” この値だけを100くらいに設定しました。
軽く調べてみると、プロセスの数は起動直後は84くらい。
しばらくすると95くらいまで上がりました。
[root@32bittest]$ ps aux | wc 94 1060 7363 [root@32bittest]$
最初はまずはシェルを起動してみます。連打、連打。
[root@32bittest]$ zsh [root@32bittest]$ zsh /etc/profile.d/colorls.sh:21: fork failed: リソースが一時的に利用できません [root@32bittest]$ zsh /etc/profile.d/colorls.sh:21: fork failed: リソースが一時的に利用できません /etc/profile.d/vim.sh:3: fork failed: リソースが一時的に利用できません compaudit:91: fork failed: リソースが一時的に利用できません compinit:514: fork failed: リソースが一時的に利用できません [root@32bittest]/home/takeken# zsh zsh: fork failed: リソースが一時的に利用できません
こんな感じです。エラーが出ているはずなのにログには何も残らない。
次はApacheをリロードしてみる。
[root@32bittest]$ service httpd restart /etc/rc.d/init.d/functions: fork: retry: Resource temporarily unavailable /etc/rc.d/init.d/functions: fork: retry: Resource temporarily unavailable /etc/rc.d/init.d/functions: fork: retry: Resource temporarily unavailable /etc/rc.d/init.d/functions: fork: retry: Resource temporarily unavailable /etc/rc.d/init.d/functions: fork: Resource temporarily unavailable httpd を停止中: /etc/rc.d/init.d/functions: fork: retry: リソースが一時的に利用できません /etc/rc.d/init.d/functions: fork: retry: リソースが一時的に利用できません /etc/rc.d/init.d/functions: fork: retry: リソースが一時的に利用できません /etc/rc.d/init.d/functions: fork: retry: リソースが一時的に利用できません /etc/rc.d/init.d/functions: fork: リソースが一時的に利用できません [ OK ] httpd を起動中: httpd: apr_sockaddr_info_get() failed for 32bittest httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ]
上のログでは最終的にリロードできているけど、最初はまったく動かずでした。
Apacheのmpmをちょこっといじってようやくこんな感じに。ちなみにブラウザ上で確認してみたら、Apacheの仕組みの説明になってしまうので省きますが、プロセスが既にある分はちゃんと動いてくれます。
下のように当然だけど新しく作り出すことは出来ない。
[Tue Jul 08 13:07:45 2014] [error] (11)Resource temporarily unavailable: fork: Unable to fork new process [Tue Jul 08 13:07:58 2014] [error] (11)Resource temporarily unavailable: fork: Unable to fork new process [Tue Jul 08 13:08:08 2014] [error] (11)Resource temporarily unavailable: fork: Unable to fork new process [Tue Jul 08 13:08:19 2014] [error] (11)Resource temporarily unavailable: fork: Unable to fork new process [Tue Jul 08 13:08:29 2014] [error] (11)Resource temporarily unavailable: fork: Unable to fork new process
新しいものが出来ない場合は上のようなログになりました。
こんなことも起きます。
[root@32bittest]$ a zsh: fork failed: リソースが一時的に利用できません [root@32bittest]$ [root@32bittest]$ exit [root@32bittest]$ [root@32bittest]$ a zsh: command not found: a [root@32bittest]$
これだけ見ても意味が分からんかもですが、これはシェルを1個閉じて、aというのが実行できたログです。
文章で表すのは難しいから載せないですけど、シェルを閉じるのではなくて、Apacheのセッションが切れるのを待ってからコマンドを実行してみるという事でも実行はできました。
出来ること、出来なくなったことを把握するのはちょっと難しそうですなぁ。
それが分かっただけでも収穫かしら。
眠いし・・今日はまあいいかぁ。
だめだこりゃ~。