Комментарии 8
Попробуйте ходить из приложения не через 127.0.0.1, а через сокет /tmp/proxysql.sock будет быстрее.
По конфигу два коментария.
monitor_ping_interval у вас стоит в 200000ms (200 секунд), это означает что среднее время между падением сервера и обнаружением этого ProxySQL — 100 секунд, а в плохом случае ProxySQL будет ломиться на нерабочий сервер больше трех минут. Лучше поставить это значение хотя бы в дефолтное (8 секунд), а лучше раз в секунду, проверка легкая, сервер не тормозит.
max_connections у вас стоит в 10 000. Если каждый клиент откроет в пике 10к коннектов, базе может стать очень нехорошо. Лучше поставить в сотню, тем более что вы сами посчитали, что в среднем у вас 50-80 активных подключений с бокса, что честно говоря очень много и это значит что нужно смотреть на незакрытые транзакции и медленные запросы.
monitor_ping_interval у вас стоит в 200000ms (200 секунд), это означает что среднее время между падением сервера и обнаружением этого ProxySQL — 100 секунд, а в плохом случае ProxySQL будет ломиться на нерабочий сервер больше трех минут. Лучше поставить это значение хотя бы в дефолтное (8 секунд), а лучше раз в секунду, проверка легкая, сервер не тормозит.
max_connections у вас стоит в 10 000. Если каждый клиент откроет в пике 10к коннектов, базе может стать очень нехорошо. Лучше поставить в сотню, тем более что вы сами посчитали, что в среднем у вас 50-80 активных подключений с бокса, что честно говоря очень много и это значит что нужно смотреть на незакрытые транзакции и медленные запросы.
А вы не пробовали использовать его функционал по кэшированию запросов?
На тестовой нагрузке работает, а вот как он поведёт себя на >20k запросов в секунду — неизвестно.
Интересное совпадение — заговорили про кэширование, и как раз всплыло. Написал комментарий — его не видно…
Продублирую ещё раз в таком случае.
Не могу не согласиться — конечно решать на уровне приложения правильней. Но сейчас как-то часто случается что или разработчики заняты, или их уже нет. А нагрузка есть и с ней нужно что-то делать.
С микрокэшированием на уровне nginx-а я уже обжёгся. Теперь вот хочу набить шишек уровнем ниже.
Продублирую ещё раз в таком случае.
Не могу не согласиться — конечно решать на уровне приложения правильней. Но сейчас как-то часто случается что или разработчики заняты, или их уже нет. А нагрузка есть и с ней нужно что-то делать.
С микрокэшированием на уровне nginx-а я уже обжёгся. Теперь вот хочу набить шишек уровнем ниже.
Попробовал проксировать запросы через ProxySQL (v2.0.12 из исходников). Удивительно, но подключений к базе стало больше. Может этот multiplexing нужно как-то отдельно включать? Например в табличке mysql_query_rules есть поле 'multiplex'.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
ProxySQL — средство для демультиплексирования соединений