Wrong Keep-Alive. TCP keepalive is a feature of the TCP stack that periodically (default is every 4 hours, if I remember correctly) sends an empty data packet just to make sure the other side still has its end of the connection open. It's a network-level feature and will not under any circumstances cause the server (or client) to not close the connection.
http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
HTTP Keep-Alive is a line in the request header requesting that the server not close the connection after responding to this request so that further requests can be sent along the same TCP connection. The server may choose not to honor this request.