子プロセスでacceptedなソケットをclose()すれば、FINパケットが送られると思っていたが、親プロセスでもacceptedなソケットをclose()する必要があった UNIXネットワークプログラミング第2版の4.8節 並行サーバに以下のようなことが書かれていた。 ソケットやファイルはすべて参照カウントをもつ。fork()すると子プロセスがディスクリプタを複製するため、参照カウントが2になり、子プロセスがclose()するだけだと参照カウントが0にならず、FINパケットが送信されない。したがって、親プロセスでも同じソケットディスクリプタをclose()する必要がある。 強制的にFINを送るshutdown()というものもある。shutdown()をどういうときに使うかもUNIXネットワークプログラミングにかかれていた。 大量に子プロセスが残っていて、ab -n 1000 -c 1