Node death on load

I have a small 3-node cluster, I try loading 180 million documents to is using the Java TransportClient and the load I send the documents to always dies. The ES process ends. All I can see in the logs is a lot of GC time percentage wise. My hypothesis is that this one node is doing all the routing and I was wondering whether I have to set any other settings to allow the client itself to route between different nodes during a load. I am using the BulkLoader and this is how I configure a TransportClient:

  public static Client getExternalClient(String ip) throws AnException {
    InetAddress iaddress;
    try {
        iaddress = InetAddress.getByName(ip);
    } catch (UnknownHostException e) {
        throw new AnException("Cannot get a Client to ES cluster, perhaps the host name / IP address is incorrect", e);
    }

    return new PreBuiltTransportClient(getSettingsForExternalClient())
            .addTransportAddress(new TransportAddress(iaddress, 9300));

}

public static Settings getSettingsForExternalClient() {
    Settings.Builder b = Settings.builder()
            .put("cluster.name", Constants.getClusterName())
            .put("client.transport.nodes_sampler_interval", "30s")
            .put("client.transport.ping_timeout", "30s");
    return b.build();
}

I call getExternalClient( ip)
Where ip is the ES node that always dies.

I'd noticed here https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html that setting:

.put("client.transport.sniff", true)

seems like it might be the thing to do, but I thought I'd check in here and make sure I am not missing anything.

Cheers,
Phil

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.