🖥️ ИТ операциялары — сайттын ишенимдүүлүгү Тирүү модель
Сиз веб-кызмат боюнча кезекчисиз: даналар паркынын алдындагы жүктөм теңдегич, маалымат базасынын алдындагы кэш жана 99,9 % жеткиликтүүлүк максаты. Модель ар бир мүнөт сайын окуулук формулалардан кезек кечигүүсүн, күтүү чегин, кэш табууларын жана маалымат базасынын жүктөмүн, ошондой эле чечимдериңиздин баасын эсептейт.
Эмнени үйрөнөсүз
Кечигүү толук пайдаланууга жакындаганда эмне үчүн жарылып кетет (Эрланг C) жана жүктөлүү кечигүүсү менен автомасштабдоо эмне үчүн ар дайым кеч келет.
SLO, каталар бюджеттери жана күйүү ылдамдыгы эскертүүлөрү качан кайтаруу керектигин кантип чечет.
Муздак кэш маалымат базасынын иштен чыгышына кантип айланат жана кандай ыктар убакыт утат: жеңилдетүү, деградация, ысытуу.
Симулятор
Убакыт 0 мүн
▶Тейлеп жаткан дана
⚙Иштетилип жаткан дана
!Начар жыйнактагы дана
·Бош орун
•Кирүүчү суроолор
Башкаруу элементтери
Паркка төмөнкү чек. Аны көтөрүү даналарды дароо иштетет — бирок тейлөөдөн мурун аларга жүктөлүү кечигүүсү керек.
Пайдалануу деңгээли боюнча максаттуу көзөмөл; даналар дагы иштетилип жатканда жаңы масштабдоо жок. Өчүк = так минимум.
Төмөн = көбүрөөк запас жана көбүрөөк чыгым. Өлчөнгөн пайдалануу 100 %’дан ашпайт, ошондуктан каныккан парк кадам-кадам менен гана өсөт.
Узагыраак TTL = көбүрөөк табуу, бирок жооптор эскирээк болушу мүмкүн (орточо жашы ≈ TTL/2).
6 мүнөт бою ысык ачкычтарды жүктөйт (мүнөтүнө кэштин +12 %’ы) кошумча 600 маалымат базасы суроосу/с баасына.
Жүктөм теңдегичте «кийин кайталаңыз» деп кабыл алынбаган төмөн артыкчылыктуу 30 %’дын (алдын ала жүктөө, пакеттик иштетүү, роботтор) үлүшү.
Оор мүмкүнчүлүк ар бир суроого 20 мс CPU жана бир маалымат базасы суроосун кошот. Өчүк = жумшак деградация.
Акыркы жакшы курууну жаңы серверлер паркында кайра жайгаштырат (5 мүн, эки эсе төлөнөт), андан кийин трафикти которот. Кайра басуу даярдыкты башынан баштайт; жаман куруу иштебей турганда, ал акчага гана түшөт.
Көрсөткүчтөр
Ката үлүшү
0,00%
кадимки
p99 кечигүүсү
342ms
кадимки
Калган каталар бюджети (30 күн)
50,0%
кадимки
Парктын пайдаланылышы
52%
кадимки
Күйүү ылдамдыгы (1 саат)
0,0 ×
Суроолор
1125 req/s
Тейлеп жаткан даналар
10
Иштетилип жаткан даналар
0
Кэш табуу үлүшү
77 %
Маалымат базасын пайдалануу
19 %
Жеңилдетилген трафик
0 %
Парк чыгымы
4,00 $/h
Ушул убакка чейинки чыгым
0,00 $
Кэштелген жоопторунун орточо жашы
30 s
Начар жыйнактагы трафик
0 %
Сунуштамалар жеткиликтүү
100 %
Тренд
Кризис сценарийлери
1-деңгээл · Начар релиз
Жаңы жыйнак 09:10’до чыгат. Ай буга чейин оор өттү: каталар бюджетинин 20 %’ы гана калды. Жайгаштыруудан бир нече мүнөттөн кийин күйүү ылдамдыгы эскертүүсү иштейт. Бюджетти коргоңуз.
Аягындагы калган каталар бюджети ≥ 18,5 %
Жайгаштыруудан кийинки орточо ката үлүшү ≤ 0,65 %
Парк чыгымы ≤ $9,50
2-деңгээл · Капыстан келген көп эл
Кызматка шилтеме тез тарап жатат жана бүгүн эртең менен кандайдыр бир учурда трафиктин секириши күтүлүүдө — качан жана канчалык чоң экенин эч ким билбейт. Жаңы даналар бүгүн иштеп баштоого 8 мүнөт талап кылат. Ал келгенде, бош кубаттуулукка акчаны текке кетирбей, каталарды жана кечигүүнү төмөн кармаңыз.
Орточо ката үлүшү ≤ 0,2 %
Орточо p99 кечигүүсү ≤ 400 мс
Орточо жеңилдетилген трафик ≤ 5 %
Жалпы чыгым ≤ $21
Сунуштамалар убакыттын ≥ 85 %’ында жеткиликтүү
3-деңгээл · Муздак кэш
Түшкү чокуда тейлөө скрипти бүт кэшти тазалайт. Эми ар бир суроо адаттагы 85 % табуу үлүшүнө эсептелген маалымат базасына барат. Маалымат базасын ашыкча жүктөбөй, кызматты калыбына келтириңиз.
Орточо ката үлүшү ≤ 1,5 %
Биринчи мүнөттөн кийин маалымат базасын пайдалануу эч качан 90 %’дан жогору эмес
Кэштелген жоопторунун орточо жашы орто эсеп менен ≤ 90 с
Жалпы чыгым ≤ $9
Сунуштамалар убакыттын ≥ 80 %’ында жеткиликтүү
Орточо жеңилдетилген трафик ≤ 5 %
Негиз — сандардын артындагы модель
Симулятор колдонгон ар бир катыш өз булагы менен. Божомол деп белгиленген туруктуулар — көрсөтмө калибрлөөлөр.
Суроолор суткалык ийри сызыкты жана бузуучу таасирлерди ээрчийт; мүнөттөгү саны кокус (Пуассон, нормалдуу жакындатуу) бир аз заматта өсүү менен.
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]Божомол: жумушчулар саны, тейлөө убакыттары, маалымат базасынын сыйымдуулугу, кэш өлчөмү, толтуруу ылдамдыгы, баалар жана начар жыйнактын ката үлүшү орто өлчөмдөгү веб-кызмат үчүн иллюстрациялык маанилер.
Эрланг C: M/M/N системасында суроо бош жумушчуну күтүшү керек болуу ыктымалдыгы.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Күтүү убактысынын куйругу: t’дан узак күтүү ыктымалдыгы экспоненциалдуу азаят; 2 с күтүү чегинде дагы күтүп жаткан суроолор ийгиликсиз болот. Сыйымдуулуктан ашканда ашыкчасы ийгиликсиз болот.
Тейлөө убактысы жана күтүү убактысынын квантилдеринен p99 кечигүүсү.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Жакындатуу: тейлөө жана күтүү квантилдерин кошуу алардын суммасынын так p99у эмес (ал бир аз жогору же төмөн болушу мүмкүн); суроолор миллисекунд алгандыктан, кезек ар бир мүнөттүн ичинде туруктуу деп эсептелет.
Литтл мыйзамы: бош эмес жумушчулар = келүү ылдамдыгы × тейлөө убактысы.
TTL кэш: кокус суроолордо ар бир өткөрүп жиберүү суроолор таба турган TTL мезгилин баштайт.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Кэштен өткөрүп жиберүүлөр маалымат базасын жүктөйт; анын кезек кечигүүсү ага тийген ар бир суроону жайлатат, бул колдонмо жумушчуларын да толтурат.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Божомол: жумушчулар саны, тейлөө убакыттары, маалымат базасынын сыйымдуулугу, кэш өлчөмү, толтуруу ылдамдыгы, баалар жана начар жыйнактын ката үлүшү орто өлчөмдөгү веб-кызмат үчүн иллюстрациялык маанилер.
SLO жана каталар бюджети: күйүү ылдамдыгы бюджет уруксат этилгенден канча эсе тез сарпталып жатканын көрсөтөт.
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
Жүктөлүү кечигүүсү жана муздоо мезгили бар максаттуу көзөмөлдөөчү автомасштабдагыч.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Божомол: жумушчулар саны, тейлөө убакыттары, маалымат базасынын сыйымдуулугу, кэш өлчөмү, толтуруу ылдамдыгы, баалар жана начар жыйнактын ката үлүшү орто өлчөмдөгү веб-кызмат үчүн иллюстрациялык маанилер.
Модель колдонгон башка пайдалануу турактуулары.
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesБожомол: жумушчулар саны, тейлөө убакыттары, маалымат базасынын сыйымдуулугу, кэш өлчөмү, толтуруу ылдамдыгы, баалар жана начар жыйнактын ката үлүшү орто өлчөмдөгү веб-кызмат үчүн иллюстрациялык маанилер.
Кокустук: seed менен mulberry32 генератору; колдонулган бөлүштүрүүлөр — бирдей, экспоненциалдуу (тескери CDF), нормалдуу (Box–Muller), Пуассон (Knuth). Seed көрсөтүлөт жана аны бөлүшүүгө болот.
M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013