Постоянные соединения с базой данных в fastcgi - PullRequest
3 голосов
/ 11 ноября 2008

Я портирую приложение с php на fastcgi (c). Мой хост запускает apache.

Поскольку приложение fastcgi будет работать в цикле, я мог бы открыть соединение MySQL и оставить его открытым для всех входящих запросов. Это рекомендуется?

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

Какой из них правильный в моем контексте?

Ответы [ 3 ]

1 голос
/ 11 ноября 2008

Мне неприятно говорить такой очевидный ответ, но ... вы пробовали оба способа и сравнивали их? Довольно просто изменить connect () на pconnect () и просто попробовать его обоими методами. Проведите профилирование, особенно под нагрузкой, и посмотрите, что лучше всего подходит для вашей комбинации аппаратного и программного обеспечения.

На сайтах с большим трафиком иногда вы не можете заставить вашу БД принимать достаточно соединений, чтобы обеспечить постоянную работу, но в целом постоянные соединения имеют тенденцию быть более эффективными.

0 голосов
/ 11 ноября 2008

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

0 голосов
/ 11 ноября 2008

Я бы сказал, что если у вас есть хотя бы 10-20 человек, которые используют ваш сайт постоянно, то постоянные соединения работают лучше все, что меньше, излишне

...