RE: https://github.com/mongodb/mongo/blob/r3.1.5/src/mongo/client/replica_set_monitor.cpp#L75
The ReplicaSetMonitorWatcher thread has a hard-coded socket timeout of 5 seconds. It would be convenient in several ways if this could be configured as it would permit some coarse control over when mongos triggers re-routing decisions - particularly where tag-sets are involved. For a co-located mongos (co-located with all shards) might be appropriate to set a lower timeout, while a remotely located mongos might be better to set a little higher.