Я запускаю несколько проектов, которые потребляют много энергии MySQL (10'000 qps в часы пик) ... теперь мне интересно, какая была бы лучшая настройка, чтобы она была быстрой и плавной, даже если количество пользователей расти.
В настоящее время я использую 1 сервер с nginx, php-fpm и mysql (двойной xeon, 24 ГБ оперативной памяти, SSD) и подключаюсь к MySQL через локальный сокет.
Испытал бы я «падение производительности», если бы у меня был удаленный сервер MySQL с той же спецификацией, чтобы разделить нагрузку на веб-сервер / базу данных?
Будет удар по производительности, но скорее в части задержки. Так что, если вы запускаете много параллельных подключений, вы, вероятно, этого не заметите. Если вы последовательно выполняете 10kqps в одном (или нескольких) подключениях, вы определенно заметите разницу.
Сама обработка запроса не займет больше времени, просто время передачи данных от и до клиента увеличится (даже 10 Гбит Ethernet будет играть здесь роль) примерно на миллисекунду или около того (для линии 1 Гбит). Поэтому, если сам запрос занял еще одну миллисекунду, вы ограничены примерно 500 qps на соединение.
С локальным сокетом время приема-передачи составляет в значительной степени десятки микросекунд ...
Испытал бы я "падение производительности", если бы у меня был удаленный сервер mySQL той же спецификации, чтобы разделить нагрузку на веб-сервер / базу данных?
Нет, если у вас есть гигабитная или более быстрая ссылка на сервер БД.