> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

<!--
Tab options on this page. Append to the .md URL to filter:
  ?tabs=<id,...>   select specific tabs (e.g. ?tabs=nodejs,shell)
  ?allTabs=true    include every tab
  (no param)       default: one tab per tabset

Available tabs:
  other tabs: uri, options, uriExample, optionsExample
-->

# Customize Cluster Settings

## Overview

In this guide, you can learn how the Go driver manages clusters and how to customize the cluster settings.

## Specify Settings

You can specify settings for your clusters by using either a connection string or a `ClientOptions` struct when creating a new `Client` instance. Select the Connection String or ClientOptions tab to see the available options.

### Connection String

The following table describes the parameters you can use in your connection string to modify the driver's behavior when interacting with your MongoDB cluster:

| Parameter | Description |
| --- | --- |
| `serverSelectionTimeoutMS` | Specifies the maximum amount of time the driver will wait for a server to be available before throwing an error. *Default:* 30 seconds |
| `localThresholdMS` | Specifies the maximum latency in milliseconds for selecting a server. *Default:* 15 milliseconds |
| `replicaSet` | Specifies the name of the replica set to connect to. |
| `directConnection` | Specifies whether to connect directly to a single server, bypassing the replica set or sharded cluster. *Default:* `false` |
| `loadBalanced` | Specifies whether the driver is connecting to MongoDB by using a load balancer. If set to `true`, the driver assumes that it is connecting through a load balancer. You can set this option to `true` only if you meet the following requirements: You specify only one host name; You aren't connecting to a replica set; The `srvMaxHosts` option is unset or has a value of `0`; The `directConnection` option is unset or has a value of `false` *Default:* `false` |
| `srvServiceName` | Specifies the service name of the [SRV resource records](https://www.rfc-editor.org/rfc/rfc2782) the driver retrieves to construct your [seed list](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list). You must use the [DNS Seed List Connection Format](https://www.mongodb.com/docs/manual/reference/connection-string/#srv-connection-format) in your connection string to use this option. |
| `enableOverloadRetargeting` | Specifies whether the driver deprioritizes a server that returns an overload error, reducing the likelihood of retrying on the same overloaded server. *Default:* `false` |
| `maxAdaptiveRetries` | Specifies the maximum number of times the driver retries an operation that fails with a server-side overload error. *Default:* `2` |

### Example

Select the Connection String or ClientOptions  tab to see the corresponding example:

### Connection String

The following code uses the connection string to configure the maximum server selection timeout to 10 seconds and the local threshold to 20 milliseconds:

```go
const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=10000&localThresholdMS=20"

```

The following code creates a client and passes the connection string to the `ApplyURI()` method:

```go
client, err := mongo.Connect(options.Client().ApplyURI(uri))
if err != nil {
	log.Fatal(err)
}
```

## API Documentation

To learn more about the methods and types in this guide, see the following API documentation:

- [Client](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo#Client)

- [ClientOptions](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo/options#ClientOptions)

- [ApplyURI()](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo/options#ClientOptions.ApplyURI)

- [SetEnableOverloadRetargeting()](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo/options#ClientOptions.SetEnableOverloadRetargeting)

- [SetMaxAdaptiveRetries()](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo/options#ClientOptions.SetMaxAdaptiveRetries)
