Update: The delete ran for more than 6 hours before I manually killed the connection via post to
http://192.168.1.13:2480/connection/kill/87. Upon further inspection, this vertex had more than 75,000 edges (very unusual for our app) which I suspect is why the server ran out of memory.
Sorry the server log was automatically deleted and if the heap dump file is /usr/bin/orientdb-community-2.1.0/bin/java_pid1357.hprof then it's just under 2GB.
My takeaways from this experience are
a) be very careful deleting things. If you delete an RID manually, make sure to interrogate the item (number of edges, etc) to determine potential impact before you issue the command. If you allow end users to delete RIDs via web interface or have scheduled processes that do it then you are completely hosed.
b) when delete query fails due to out of memory, it seems orientdb tries the delete over and over again never-ending (per the server log) which exacerbates the problem. If delete runs out of memory on the first attempt why would it succeed on the 500th attempt?
c) deleting one RID can definitely bring your whole database down for hours, affecting all end users by making their binary connections unusable. No known workaround.
d) if you can isolate the problem and figure out which exact connection ID is the culprit then doing a /connection/kill/<id> seems to resolve the situation without having to resort to a kill -9 at the operating system level and restoring the database from backup.