Когда количество клиентов MySQL превышает максимальное количество соединений, драйверы на разных языках сообщают об ошибке «Слишком много соединений».
Ошибка программы Java:
Источник данных отклонил установление соединения, сообщение от сервера: «Слишком много соединений»
Ошибка программы .NET Core:
Слишком много связей Или, по крайней мере, ошибка подключения: Тайм-аут истёк. Период тайм-аута проходил до получения соединения из пула. Это могло произойти из-за того, что все объединённые соединения были использованы и максимальный размер пула был достигнут.
Используйте следующую команду, чтобы увидеть максимальное количество соединений и текущее количество соединений:
временно установите максимальное количество соединений,Перезапускать MySQL сервер не обязательно, но настройка становится недействительной при перезагрузке сервиса MySQL:
Вы можете постоянно установить максимальное количество подключений к базе данных в /etc/my.cnf:
Когда мы устанавливаем максимальное количество соединений и тестируем с помощью .NET-программы, ошибка всё равно будет следующей:
ошибка подключения: Тайм-аут истёк. Период тайм-аута проходил до получения соединения из пула. Это могло произойти из-за того, что все объединённые соединения были использованы и максимальный размер пула был достигнут. Это связано с тем, что .NET-клиенты по умолчанию используют пулы потоков, а максимальный лимит для пулов потоков по умолчанию равен 100
Вход по гиперссылке виден.
МыЗакрыть пул потоков пула, без использования пула потоков нет ограничения, тест проводится одновременно с 500 потоками, и ошибки не сообщаются, как показано на рисунке ниже:
Тестовый код .NET/C# выглядит так:
(Конец)
|