Apart from one big vendor most BGP speaker only send KEEPALIVES when they need to. So on my full feeds I see sessions running for more then 1 month which received less then 300 KEEPALIVE packets.
The negociaged holdtime is always the lower value presented between two routers. The default HoldTime timer for Cisco is 180 seconds and for Juniper 90. So you should see a KEEPALIVE packet every minute from/to Cisco routers, and one every 30 seconds between Junipers. Should a BGP speaker do not see any KEEPALIVE during $HOLDTIME, it will tear the session down. You are telling me that your effective holdtime is 2592000 seconds when the HOLDTIME field is 16 bits ... hum ... http://www.faqs.org/rfcs/rfc4271.html section 4.2 So unless you know something I don't, I believe you are totally mistaken :) Thomas