Идвам да кажа, че понякога се престараваме с инфраструктурата ни. Например marvin живя дълго време на 2GB RAM (1vCPU, 2GB RAM, 25GB storage). След като ми мина downscale initiative-а минах на 1GB RAM (1vCPU, 1GB RAM, 25GB storage) като цената беше на половина ($6 vs $12).
Имах малко притеснения как ще се държи машината при все, че на нея живее освен блога и няколко проекта + docker compose и три контейнера (watchtower, cdn-check и storytel to goodreads sync-а) + база + още няколко неща.
Е, след малко играчка с php-fpm и базата в момента състоянието на VPS-а е:
marvinator@xxx ~ $ free -m
total used free shared buff/cache available
Mem: 967 643 111 70 436 324
marvinator@xxx ~ $ w
12:14:19 up 43 days, 3:12, 3 users, load average: 0.25, 0.25, 0.23
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
xxx pts/0 185.7.216.6 12:14 0.00s 0.19s ? w
Интересен факт, който разглеждахме с моето mentee е за това колко реално свободна памет има на машината.
В момента имам точно 324 MB налична памет за нови приложения (последната колона).
Понякога хората се бъркат по стойността на колоната free, но както знаем в Linux “свободната” памет е празна памет, а празната памет е загубена памет (каква мъдра мисъл, а?). Linux kernel-а я използва за кеширане, но ще я освободи веднага, ако някое приложение я поиска).
Та тръгнах да пиша това по повод, че си гледам как последно време китайците са се засилили да ми “четат” (да не кажа ебат) блога. Малко статистика:
Та с едно ядро и 1GB RAM можем да направим супер много. Всъщност базата ми е един от най-големите процеси.
Забравихме какво е да си пазим ресурсите и include-ваме десетки npm пакети, инсталираме и забравяме за сървиси, които могат да се оптимизират точно за нашите нужди (и съответно да използват много по-малко ресурси), решаваме, че можем да си използваме ubuntu:latest във всеки контейнер, защото … еми защото работи. На кому е нужен slim/alpine.
Нека това е напомняне към това, че overprovisioning-а в някои случаи може да е ок, но не винаги е нещото, което търсим.