Лучше иметь одно глобальное соединение с memcached / mongo из узла или соединений при каждом запросе? - PullRequest
1 голос
/ 26 августа 2011

Я (пере) пишу API от php до узла, который имеет чрезвычайно высокое использование; он использует memcached и в настоящее время подключается к memcached, выполняет свою работу и впоследствии закрывается при каждом запуске php-файла, т.е. каждый раз при доступе к странице api.

Теперь с помощью узла мы создаем сам http-сервер; Я мог бы определить глобальное memcached соединение и использовать это:

var mclient = new memcache.Client(server, port);

// This would only run after mclient has connected 
http.createServer(function (req,res){
    // stuff involving mclient
}).listen(8888);

или я мог бы поместить его в обратный вызов createServer. Тот же вопрос относится и к соединениям mongodb. Что мне делать?

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Я бы предложил использовать пул из более чем одного соединения.Это позволит одновременно выполнять несколько операций в полете, экономя при этом накладные расходы на TCP-квитирование / ограничение скорости и квитирование на уровне приложений (например, вход в систему), которое происходит при создании новых соединений.не знаю насчет memcached, но я думаю, что node-native-driver для MongoDB (https://github.com/christkv/node-mongodb-native) работает над встроенным пулом соединений, поэтому вам не нужно реализовывать это самостоятельно. В документации есть примечание, чтоскоро, но похоже, что код уже есть, поэтому он должен быть очень скоро.

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

2 голосов
/ 26 августа 2011

Лучше одно соединение, потому что вам не нужно проходить авторизацию и инициализацию каждый раз, когда вы делаете запрос в db. Почти все, к чему вы хотите получить быстрый доступ, вы должны хранить в ОЗУ, не только подключения к БД, но и общие шаблоны или другие файлы, которые вы часто используете, конфигурацию или некоторые очереди.

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