Следует ли использовать $ new_link в mysql_connect ()? - PullRequest
2 голосов
/ 03 апреля 2010

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

В файле /include/database.mysql.inc @mysql_connect($url['host'], $url['user'], $url['pass'], TRUE, 2) ( mysql_connect () документация ) используется для подключения к базе данных.

Следует ли использовать $new_link = TRUE? Насколько я понимаю, это «всегда открывает новую ссылку». Может ли это быть причиной слишком большого количества соединений?

Ответы [ 5 ]

2 голосов
/ 03 апреля 2010

Редактирование ядра - это нет, нет. Вы забудете, что сделали, обновите версию, и бац, изменения пропали.

1 голос
/ 04 апреля 2010

К вашему сведению: использование постоянных соединений с Drupal вызывает проблемы. Насколько я знаю, никто не использует это.

1 голос
/ 03 апреля 2010

Drupal запускает несколько высокопроизводительных сайтов без проблем. Например, сайт Grammy Awards в этом году перешел на Drupal, и впервые сайт не закрылся во время церемонии! некоторые настройки нуждаются в настройке. Вероятно, MySQL.

Отредактируйте ваш my.cfg и перезапустите ваш сервер MySQL (/etc/my.cfg в fedora, RH, centos и /etc/mysql/my.cfg в * buntu)

[туздЫ] max_connections = некоторый номер-здесь

в качестве альтернативы, сначала попробуйте изменить без перезагрузки сервера, войдите в MySQL и попробуйте:

показывать переменные типа 'max_connections' # это говорит о текущем числе установить глобальные max_connections = some-number-here

О, и как другой человек сказал: ДЕЛАЙ. НЕ. РЕДАКТИРОВАТЬ. Друпал. CORE. Если вы хотите, чтобы ваш сайт обновлялся, это окупается, может вызвать негибкую головную боль и навредить вам.

1 голос
/ 03 апреля 2010

MySQL, как и любая другая СУБД, будет ограничивать количество соединений, которые она принимает в любое время.Файл конфигурации my.cnf указывает это значение для сервера в конфигурации max_connections.Вы можете изменить эту конфигурацию, но существуют реальные ограничения в зависимости от емкости вашего сервера.

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

Подключитесь к MySQL и используйте 'SHOW PROCESSLIST'.Он покажет вам открытые в данный момент соединения и что они делают.У вас может быть несколько подключений, которые простаивают или выполняют запросы, которые занимают слишком много времени.Для незанятых соединений может потребоваться только убедиться, что ваш код не поддерживает соединения открытыми, когда они им не нужны.Во-вторых, они могут быть частями вашего кода, которые необходимо оптимизировать, чтобы запросы не занимали слишком много времени.

Если все соединения допустимы, у вас просто больше нагрузки, чем позволяет ваша текущая конфигурация.Если у вас низкая нагрузка на MySQL даже при текущем количестве подключений, вы можете немного увеличить его и посмотреть, как он развивается.

Если вы не находитесь на выделенном сервере, вы вряд ли сможете с этим справиться,Это может быть просто чужой код, вызывающий проблемы.

Иногда эти сбои носят временный характер.Если это не удается, вы можете просто повторить попытку через несколько миллисекунд.Если по-прежнему происходит сбой, это может быть проблемой, и остановка сценария является правильным решением.Не помещайте это в бесконечный цикл (видел это раньше, ужасная идея).

0 голосов
/ 03 апреля 2010

Параметр new_link действует только в том случае, если у вас есть несколько вызовов mysql_connect(), во время 1 запроса , что, вероятно, здесь не так.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...