ハマりました。
世の中には古い情報が溢れてていて、タイムアウトにはalarmを使うという解説をよく見かけますが現在では通用しないです。apache2系からCGI環境ではSIGALRMがマスクされていてSIGALRMをハンドルするようにCGIでコーディングしても実行されることはありません。
シグナルマスクを解除するには sigprocmaskが使えますが、マスクされている理由がありますので良く理解したうえで使う必要があります。
参考にさせていただきました。Apache: CGIでシグナルハンドラを使用する方法 – PHACTORY