Not mentioned in all the other answers is a case where kill -9 doesn't work at all, when a process is <defunct> and cannot be killed:
How can I kill a <defunct> process whose parent is init?
[What is defunct for a process and why it doesn't get killed?][1]What is defunct for a process and why it doesn't get killed?
So before you attempt to kill -9 a <defunct> process run ps -ef to see what his parent is and attempt the -15(TERM) or -2(INT) and lastly -9(KILL) on his parent.
Note: [what ps -ef does][2]what ps -ef does.
Later edit and caution: Proceed with caution when killing processes, their parent or their children, because they may leave files opened or corrupted, connections unfinished, may corrupt databases etc unless you know what kill -9 does for a process, use it only as a last resort, and if you need to run kill use the signals specified above before using -9 (KILL)
[1]: https://askubuntu.com/questions/201303/what-is-defunct-for-a-process-and-why-it-doesnt-get-killed
[2]: http://explainshell.com/explain?cmd=ps%20-ef