Воспроизведите com.mysql.jdbc.exceptions.jdbc4. CommunicationsException с установкой Spring, будьте в спящем режиме и C3P0

Другие упомянули определенные преимущества управления исходным кодом в другом месте, но я хотел явно обратиться к части "VSS" вопроса.

, Если Ваш босс хочет использовать инструмент Microsoft, Сервер Основы Команды с Комплектом Команды является очень хорошей комбинацией. Этому также включали другие инструменты, такие как отслеживание ошибок, документы и создание отчетов о возможностях, который делает хорошую платформу, относительно которой позже можно улучшить Ваш процесс. Мы довольно довольны им, где я работаю, и мои коллеги сказали мне страшные истории о VSS.

Имеют в виду TFS как ответ на вопрос 'о Microsoft Tools'.

14
задан fei 2 October 2009 в 21:23
поделиться

3 ответа

Чтобы воспроизвести ошибку, установите время ожидания соединения в свойствах MySQL на очень низкое значение, то есть 2 мс, и выполните запрос, который, как известно, имеет длительное время обработки. Вы можете установить свойство тайм-аута либо в строке подключения MySQL, либо через свойство, если вы используете файлы свойств для настройки соединения JDBC. Вы можете найти документацию Javadocs по конкретному соединению jaxax.sql.DataSource и документацию MySQL, чтобы узнать, как это сделать.

0
ответ дан 1 December 2019 в 16:49
поделиться

Fei - это может быть одна из нескольких вещей, не могу сказать, основываясь на опубликованной на данный момент информации.

Предлагаем вам добавить MySQL / Spring / Hibernate / C3PO / JDBC номера версий на ваш вопрос, на случай, если есть известная проблема.

Сообщение о производственной ошибке является частым и имеет множество возможных основных причин. Некоторые подсказки для вас:

  1. Производственная ошибка может указывать на что ваше приложение не освобождая соединение обратно к бассейн, когда закончите с ним, предотвращая c3p0 от проверки. (C3p0 проверки простоя могут применяться только к незарегистрированные соединения.)

  2. Убедитесь, что c3p0 действительно работает (вы можете использовать "ваниль" соединения, если нет). В вашем тесте если вы установите (например) MySql wait_timeout = 10, поток приложения sleep = 35, и idleConnectionTestPeriod = 30, если пул работает, исключение должен уйти.

  3. За счет холостых проверок: рассмотрите возможность не использовать значение по умолчанию getTables () - возможно установить ПредпочитаемыйTestQuery на что-то дешевое (-er) 'SELECT 1', может быть, для MySQL?

0
ответ дан 1 December 2019 в 16:49
поделиться

У меня были похожие проблемы с MySQL и пулом соединений. Проблема в том, что вы сообщаете пулу соединений, что тайм-аут простоя составляет 30 минут, но база данных разрывает соединение через 10 секунд. Так как период проверки бездействующего соединения составляет 120 секунд, у пула остается чуть меньше 110 секунд, чтобы использовать разорванное соединение!

Я бы использовал следующие настройки для производства:

MySQL:
wait_timeout=75
C3P0:
maxIdleTime=60
idleConnectionTestPeriod=55
3
ответ дан 1 December 2019 в 16:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: