Periodically getting time out errors while inserting documents

We have 3 node Elasticsearch cluster . We are using following configuration on three nodes.

network.host: x
discovery.zen.ping.unicast.hosts: ["x", " y","z"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.multicast.enabled: false

Elsticsearch version -2.3.4, java - openjdk -8

cluster health is green with three data nodes. index replication factor :1, shards: 5.

In the beginning it was fine but recently we are getting following error while inserting documents into index.

Error: Request Timeout after 30000ms
at /home/ubuntu/search/node_modules/elasticsearch/src/lib/transport.js:336:15
at null. (/home/ubuntu/search/node_modules/elasticsearch/src/lib/transport.js:365:7)
at Timer.listOnTimeout (timers.js:92:15)

please help me to resolve this problem

Maybe the cluster is too busy to accept new indexing requests? Or maybe the node that you configured when instantiating your client went down (for some time at least), how are you configuring your client, are you using sniffing?

three nodes are up and running. Load on the cluster is normal.cluster status is green. I am not using sniffing.

Is there evidence of eg. some nodes running garbage collection for more than 30s?

When things start timing out, does it start working again later or does it never recover?

I am getting errors while inserting documents into particular index only(no errors during search operations on same index). In other indices i can index the documents with out any errors

Is this index fully allocated?