TIME_WAIT с keepalive никак не связан - это состояние сокета в ядре
после активного закрытия. Сокет находится в этом состоянии 2*MSL секунд.
MSL равен 30 секундам. Во FreeBSD его при необходимости можно уменьшить
с помощью sysctl net.inet.tcp.msl.
Кстати, есть мнение. что с уменьшением net.inet.tcp.msl надо быть
поосторожней, по крайне мере на фре. Хотя стопроцентной уверенности нет,
но раньше, когда статику у меня отдавал thttpd, при уменьшенном msl
часто поступали жалобы от тех, у кого стоят слишком умные детекторы
атак. Якобы с того ип, где тини висит, их атаковали. После возвращения
msl в 30 секунд, всё стало нормально. Жалоб не было по крайней мере. :-)
Это где-то в районе 4.6-4.9 или -4.10 проявлялось, я уж точно не помню.
А до 4.6 я msl не уменьшал.