Сложные системы тяготеют к отказам.
Отказы такое же свойство систем, как надёжность, наблюдаемость, масштабируемость и т. д.
Работа Richard I. Cook How Complex Systems Fail освещает:
- природу отказов;
- двойственную роль оператора системы - как защитник от хаоса, так и непосредственно причина его появления;
- заблуждения пост-анализа инцидентов - всегда есть совокупность причин, пост-знание всегда предвзято;
- отказы как следствие возрастания сложности систем.
Полезное чтение для построения причинно-следственных связей.
tags: #reliability #sre_theory
Отказы такое же свойство систем, как надёжность, наблюдаемость, масштабируемость и т. д.
Работа Richard I. Cook How Complex Systems Fail освещает:
- природу отказов;
- двойственную роль оператора системы - как защитник от хаоса, так и непосредственно причина его появления;
- заблуждения пост-анализа инцидентов - всегда есть совокупность причин, пост-знание всегда предвзято;
- отказы как следствие возрастания сложности систем.
Полезное чтение для построения причинно-следственных связей.
tags: #reliability #sre_theory
👍3
About Pool Sizing
Заметка из wiki HikariCP про установку "правильного" размера пула коннектов к базам данных.
Основные мысли
1. Последовательное исполнение на одном CPU двух тредов всегда быстрее "параллельного" (потери на context-swithing и cache miss).
2. БОльшее кол-во тредов нежели доступных CPU ведет к замедлению системы (при идеальной CPU-bound модели использования);
3. Как только в уравнение добавляются IO-операции (диск, сеть, memory), правило меняется - чем дольше треды способны находиться в заблокированном состоянии (IO-wait), тем бОльший пул коннектов следует выставлять;
Сообщество PostgreSQL ввело в оборот формулу:
Axiom: You want a small pool, saturated with threads waiting for connections.
P.S. думаю, что подход выше будет справедлив для всех типов коммунальных ресурсов.
tags: #performance #reliability
Заметка из wiki HikariCP про установку "правильного" размера пула коннектов к базам данных.
Основные мысли
1. Последовательное исполнение на одном CPU двух тредов всегда быстрее "параллельного" (потери на context-swithing и cache miss).
2. БОльшее кол-во тредов нежели доступных CPU ведет к замедлению системы (при идеальной CPU-bound модели использования);
3. Как только в уравнение добавляются IO-операции (диск, сеть, memory), правило меняется - чем дольше треды способны находиться в заблокированном состоянии (IO-wait), тем бОльший пул коннектов следует выставлять;
Сообщество PostgreSQL ввело в оборот формулу:
connections = ((core_count * 2) + effective_spindle_count)
* core_count
должен учитывать только физически ядра (никакого вам HT); * effective_spindle_count
равен 0 если вся БД способна поместиться в кеш и приближается к фактическому кол-ву дисков по мере снижения cache hit rate.Axiom: You want a small pool, saturated with threads waiting for connections.
P.S. думаю, что подход выше будет справедлив для всех типов коммунальных ресурсов.
tags: #performance #reliability
GitHub
About Pool Sizing
光 HikariCP・A solid, high-performance, JDBC connection pool at last. - brettwooldridge/HikariCP
👍4