У меня есть приложение, работающее на Node.js и Экспресс с использованием базы данных MySQL . Водителем, который я использую, является node-orm2. Наши пользователи сообщают об ошибке «Too Many Connections», и я поставил диагноз проблемы, но я не знаю, как это исправить.Node и MySQL - Решение «Слишком много подключений» вопрос
В основном, что происходит, каждый раз, когда новый пользователь посещает сайт, драйвер создает для них новый поток/процесс. Я могу сделать запрос на db, и он появится там с Time
0
.
Если пользователь делает другое действие, которое требует базы данных, что же поток повторно используется и Time
восходит к 0
. Однако, если они этого не сделают, нить остается в живых (с Command
от Sleep
), а Time
отходит. У db максимальный предел подключения 250
и тайм-аут 7200
.
В основном, если более 250 человек используют сайт в течение 2 часов, мы видим ошибку «Слишком много подключений».
Я пробовал использовать пул связи , но это сделало проблему хуже. Каждый раз, когда новый пользователь использовал базу данных, он создал 10 потоков, и когда достигло 7200 секундного таймаута, поток, респаунд.
Какие у меня есть варианты?
Мой текущий метод запускает запланированное задание каждые полчаса, чтобы закрыть потоки, которые были открыты слишком долго, но есть ли лучший способ?
Я использую следующие настройки:
db.settings.set("properties.association_key", "{name}Id");
db.settings.set("instance.autoFetch", true);
db.settings.set("instance.returnAllErrors", true);
db.settings.set("instance.cache", false);