MySQL, как и любые РСУБД, будет ограничено количество подключений, которое оно принимает в любое время. Файл конфигурации my.cnf указывает это значение для сервера в конфигурации max_connections. Вы можете изменить эту конфигурацию, но существуют реальные ограничения в зависимости от емкости вашего сервера.
Постоянное подключение может помочь сократить время, необходимое для подключения к базе данных, но это не влияет на общее количество подключений, которое будет принимать MySQL.
Подключитесь к MySQL и используйте «SHOW PROCESSLIST». Он покажет вам открытые соединения и то, что они делают. У вас может быть несколько соединений, сидящих без дела или работающих запросов, которые слишком длинные. Для незанятых соединений может потребоваться просто убедиться, что ваш код не поддерживает открытые соединения, когда они им не нужны. Для второго они могут быть частью вашего кода, которые необходимо оптимизировать, чтобы запросы не занимали слишком много времени.
Если все соединения являются законными, у вас просто больше нагрузки, чем позволяет ваша текущая конфигурация. Если вы загружаете MySQL, даже при текущем соединении, вы можете немного увеличить его и посмотреть, как он развивается.
Если вы не находитесь на выделенном сервере, возможно, вам не удастся это сделать. Это может быть чужой код, вызывающий проблемы.
Иногда эти сбои являются лишь временными. Когда он терпит неудачу, вы можете просто повторить соединение через несколько миллисекунд позже. Если это все еще не удается, это может быть проблемой, и остановка скрипта - это правильная вещь. Не ставьте это в бесконечный цикл (видели это раньше, ужасная идея).
В конце концов, хостинговая компания уведомила меня, что у них возникли проблемы с сервером, который вызывал проблемы, которые я видел. – Eddie