Mongodb find() operation sometimes extremely slow
You are not using the correct index. The current index will bring the results sorted but it have to perform a full collection scan. You need an index like:  

{"category_memberships.node":1,"ships_to_australia":1,"ps":1,"salesRate":-1}


This would limit the search and sorts at the same time.

The query execution variation has to do with the hotset and collection locking.