Тайм-аут - это как долго вы ждете ответа на запрос, прежде чем сдаться. TimeOut = 0 означает, что вы будете продолжать ждать, пока соединение произойдет навсегда. Хорошо, я думаю, если вы подключаетесь к очень медленному серверу, это нормально, если на ответ требуется 12 часов :-). Вообще плохо. Вы хотите установить какой-то разумный тайм-аут для запроса, чтобы вы могли понять, что ваша цель снижается и двигаться дальше по жизни.
Срок жизни соединения = сколько времени соединение живет до того, как оно будет разорвано и воссоздано. 0 лет жизни никогда не убивают и не воссоздают. Обычно это не плохо, потому что убивать и воссоздавать соединение медленно. Из-за различных ошибок ваши соединения могут застрять в нестабильном состоянии (например, при работе со странными 3-сторонними транзакциями) ... но в 99% случаев полезно поддерживать время жизни соединения как бесконечное.
Пул соединений - это способ справиться с тем фактом, что создание соединения происходит очень медленно. Поэтому вместо того, чтобы создавать новое соединение для каждого запроса, вместо этого используйте пул, скажем, 10 предварительно подготовленных соединений. Когда вам нужен один, вы одалживаете один, используете его и возвращаетесь. Вы можете настроить размер пула, чтобы изменить поведение вашего приложения. Больший пул = больше подключений = больше потоков, делающих вещи одновременно, но это также может сокрушить все, что вы делаете.
В итоге:
ConnectionTimeout = 0 плохо, сделайте что-то разумное, например, 30 секунд.
ConnectionLifetime = 0 в порядке
ConnectionPooling = отключено плохо, вы, вероятно, захотите его использовать.