본관은 안동(安東). 자는 사흥(士興), 호는 난곡(蘭谷). 김광현(金光炫)의 증손으로, 할아버지는 현감 김수인(金壽仁)이고, 아버지는 김성우(金盛遇)이며, 어머니는 윤형성(尹衡聖)의 딸이다.
1684년(숙종 10) 정시 문과에 을과로 급제, 1688년 검열이 되었으나 이듬해 기사환국으로 파직되었다가 1694년 갑술환국 후에 지평(持平)으로 다시 기용되었다.
1695년 부사직(副司直)·수찬(修撰)·부교리(副校理)·헌납(獻納)·이조좌랑·교리가 되었으며, 이듬해에 이조정랑·사간·겸필선(兼弼善)·사복시정(司僕寺正)·겸보덕(兼輔德)·집의(執義)·응교(應敎) 등을 차례로 역임하였다. 1699년에 승지에 이어 전라도관찰사가 되었으며, 1701년 대사간을 역임하였다. 시호는 헌간(獻簡)이다.