У меня есть магазин на платформе PHP (плохо разработанный), где много плохих запросов (длинные запросы без индексов, упорядочение по rand (), динамический подсчет, ..)
У меня пока нет возможности изменить запросы, но мне нужно настроить сервер, чтобы он оставался в живых.
Я перепробовал все, что знаю, у меня были очень большие базы данных, которые я оптимизировал, изменив движок MySQL и настроив его, но это первый проект, где все рушится.
Текущая ситуация:
1. Интерфейс (PHP) — Экземпляр AWS m4.large, Amazon Linux (последняя версия), PHP 7.0 с включенным opcache (модуль apache), включенный mod_pagespeed с внешним Memcached на AWS Elasticache (t2.micro, средняя загрузка 5%)
2. SQL — Percona DB с движком TokuDB на экземпляре AWS c4.xlarge (средняя загрузка 50%)
Мне нужно опустить экземпляры, в основном c4.xlarge, но если я переключусь на c4.large, через несколько часов произойдет большая перегрузка.
База данных имеет только 300 МБ данных, я пробовал кеш запросов, InnoDB, XtraDB, … безуспешно, и трафик также очень низкий. PHP использует расширение MySQLi.
Знаете ли вы какое-либо возможное решение, как снизить нагрузку без рефакторинга запросов?
Использование www.mysqlcalculator.com было бы быстрым способом проверить мозг примерно на дюжине факторов потребления памяти менее чем за 2 минуты.
Хотелось бы увидеть ваши SHOW GLOBAL STATUS и SHOW GLOBAL VARIABLES, если бы вы могли публиковать их для анализа активности и запросов конфигурации. 3 минуты вашего GENERAL_LOG в течение занятого времени были бы интересны и могли бы выявить хлопотные / трудоемкие SELECT и т. Д.
Других решений пока нет …