add keepalive option and a benchmark