No node available while exception caught on transport layer

Hi guys,

I'm using java api (transportClient) to call remote es cluser to index data, and occasionally, a warn message 'exception caught on transport layer [id:xxx /localhost ip:serve port => /remote es host ip: port], cloing connection.' sent out.
After this, a no node available exception throws out, then , my data can't be indexed to es cluster.

I generate the tansport client from a singleton class which init only once, and i'm sure it's not some es performance Issues, this only happens while doing a remote call, because whenever doing the same work in the local area network, it never happens. It was weird, anyone got an idea on this?