#php #mysql #codeigniter-3 #rest #cloudflare-workers
Вопрос:
Информация о проекте : У нас есть сервер CodeIgniter (v3.1.11) (CRUD Rest Api) для предоставления контента нашему приложению для Android, Он работал довольно хорошо, пока наша база пользователей не выросла до 500 тыс. , а Mysql начал потреблять почти все доступные ресурсы, и после расследования мы заметили, что таблица ci_sessions была узким местом, которое перед использованием автоматически уничтожалось, Но теперь они просто продолжают увеличиваться до МИЛЛИОНОВ, так что, Независимо от того, сколько мы продолжаем добавлять ресурсов на сервер Mysql(в частности, таблица ci_sessions) голод просто никогда не заканчивается, и эта проблема приводит к полной катастрофе (мы используем, чтобы получить около 10 тыс. регистрация новых пользователей в день, а теперь составляет около 1 тыс., и удержание пользователей сократилось с 79% до 15%, что в конечном итоге повлияло на снижение доходов на 80-85%. Нам удалось предотвратить влияние на существующих пользователей Путем развертывания пограничного сервера кэша для запросов на чтение, Но регистрация новых пользователей все еще сильно влияет на
Итак, можно ли безопасно переключиться на Redis для управления сеансами и потребуются ли какие-либо дополнительные изменения в текущем способе управления сеансами при использовании базы данных mysql для хранения.
(Я разработчик Android, поэтому я знаю, что большинство разработчиков Android рекомендовали бы нам предпочесть Firebase или аналогичный сервис, Но у нас был другой сценарий, во-первых, в нашем случае успех проекта не ожидался, по крайней мере, не за такой короткий промежуток времени Без рекламной кампании и 0% присутствия в Интернете, мы просто сделали наше приложение вирусным на какой-то частной платформе сообщества).
Комментарии:
1. Я сомневаюсь, что строки, только что сохраненные в ci_sessions, влияют на вашу производительность; вы хотите сказать, что проблема заключается в выборе/обновлении запросов ci_sessions?
2. Таблица базы данных с 500 тысячами строк является «маленькой». Похоже, что для обработки нужны какие-то индексы или лучшая формулировка. Пожалуйста, укажите SQL-запросы, которые вызывают проблемы. Не проводите дополнительную аппаратную или многоуровневую обработку проблемы; выясните причину.
3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.