I'm able to make leveldb alone use >500 FDs when txindex=1 is enabled. When we run out, it crashes. By default leveldb uses up to 1024 FDs, this is probably potentially problematic even on linux systems (which normally have a 1024 limit). I could see this becoming another non-deterministic fork producing issue in the future once our databases are much bigger (e.g. the network forking into txindex=0 vs 1 nodes)... though right now it looks like the nodes simply go down when they bump into the process limit.
We can reduce the number of FDs that leveldb may use, we can look into increasing the allowed FDs on OSX. I suppose we should probably do both.