2017-01-06 2 views
0

Итак, после изучения этого многого, я ищу помощь для кого-то, кто столкнулся с этим и получил выход.Я получаю эту ошибку? Ошибка: (1226) Пользователь «qe» превысил ресурс «max_user_connections» (текущее значение: 30)

Мы разработали сценарий PTC для клиента, и она работала хорошо, но, как пользователи выросли, что начиная отображается ошибка, которая, как показано ниже:

Ошибка: (1226) пользователя QE 'уже превысил' Ресурс max_user_connections (текущее значение: 30)

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

Ждем пути решения этой проблемы. Попробовали тонны вещей.

Использование godaddy хостинга в настоящий момент, они увеличили лимит с 30 до 50, но я уверен, что проблема снова появится.

+0

Вам необходимо предоставить дополнительную информацию о программном обеспечении и о том, как эта ошибка была сгенерирована. Вы также должны описать, что вы пробовали, что вы используете (MySQL? PostgreSQL? Oracle? MSSQL?) Это определенно звучит как проблема с db. –

+0

Мы используем Mysqli, написанный скриптом PHP. Ошибка появляется, когда количество пользователей превышает количество веб-сайтов. Пользователи приходят на сайт, чтобы нажимать на объявления. –

+1

Это может быть ваш скрипт, который не закрывает соединение должным образом. Сколько одновременных соединений вы обычно используете на сайте? – spencdev

ответ

-1

Нет проблем с базой данных, проблема в том, как вы обрабатываете подключения к базе данных из своего программного обеспечения.

Способ, которым настроен ваш скрипт, заключается в том, что каждое подключение к вашему веб-серверу также открывает соединение с MySQL. Это не тот сценарий, который вы хотите.

Повышение лимита не решит проблему, это просто задержит еще одну ошибку. Вам следует использовать постоянные соединения.

Одна из причин, почему использование php-fpm вместо серверных API, таких как mod_php, является предпочтительным, потому что загружено определенное количество процессов PHP и создается пул соединений с сервисами.

Поток будет следующим:

  • использования php-fpm. Apache и nginx могут использовать интерфейс FCGI для связи с php-fpm процессов
  • Поднять относительно небольшое количество дочерних процессов для php-fpm. Это не должно быть слишком большим, по умолчанию конфигурации обычно работает, я сделаю предположение, что вы не запускать систему шестиядерный так 4-6 дочерние процессы должны быть хорошо
  • использовать постоянные соединения MySQL

Что это делает? Ваш сервер принимает запрос и отправляет его в php-fpm, который обрабатывает его, когда он становится бесплатным. Каждый процесс использует 1 соединение с MySQL. Это означает, что вы никогда не сможете попасть в какой-то жесткий предел, как у вас.

Если ваш сервер занят, сервер должен поставить в очередь запросы до тех пор, пока PHP не сможет их обработать. Будь то Apache или nginx, который вы используете, этот подход будет работать хорошо.

Если ваш сайт занят, скорее всего, веб-сервер работает быстрее, чтобы принимать подключения и обслуживать статический контент, который PHP должен обрабатывать динамическим контентом. В этом случае у вас есть возможность добавить другую физическую машину (или более), которая запускает php-fpm. Поручить ваш веб-сервер объединиться между машинами, которые обслуживают PHP, тривиально для обоих указанных веб-серверов.

Суть заключается в том, что вы хотите оптимально использовать свои ресурсы. Открытие и закрытие соединений MySQL по каждому запросу не является оптимальным. Объединение соединений.

+1

Комментарий Предполагается, что сервер db имеет разумную настройку для max_connections, а также принимает информацию о коде без какого-либо кода, который был отправлен. Плакат пытается навязать совершенно отдельные технологии на очевидном пользователе noob. –

+0

@ N.B. Ваш ответ открыл новое измерение, в котором я даже не думал. (S.Imp) Раньше я менялся и оптимизировал свои таблицы базы данных, используя разные методы, которые, очевидно, не решали мою проблему. Проблема, отмеченная (N.B.), имеет общий смысл, поскольку я не работал над чем-либо, связанным с открытием и закрытием соединения от пользователя к базе данных. Спасибо за помощь. –

+0

@ N.B. Тенор ОП предполагает, что они борются с основными понятиями. Поощрение их к изменению базовой установки php/web-сервера кажется совершенно необоснованным - и ваши предложения не дают никаких подробностей о том, как они могут «использовать php-fpm». Вы не предлагаете никаких ссылок или документации или инструкций или чего-либо еще. Если вы собираетесь быть педантичным, по крайней мере, быть осторожным. –