Назад | Перейти на главную страницу

Может ли медленная база данных заставить веб-приложение задерживать соединение с кэшем памяти?

У меня есть приложение php, которое использует memcache и внутреннюю базу данных

Иногда мы видим высокие «текущие соединения» в кэше памяти и не можем определить почему.

Почему php «промахивается» из кэша памяти и должен обращаться к базе данных бэкенда, сохраняет ли он соединение с кэшем памяти открытым до тех пор, пока данные не будут возвращены?

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

Спасибо

Это зависит от дизайна вашего веб-приложения и от того, как вы получаете доступ к memached.

Если вы используете php с pecl-memcached, клиент memcache даже не знает и не заботится о том, откуда берутся данные.
Вы, наверное, делаете $m->get("keyname") call, я полагаю, вы извлекаете данные из базы данных и записываете их в memcache, если вызов возвращает false.
В этом случае как клиент или сервер memcache вообще узнает, что вы делаете?

Так, Короткий ответ: Нет, в обычных условиях кэш памяти не поддерживает соединения открытыми.