DEVOPSLIB Telegram 61
🔥 Как я чуть не уронил прод из-за cronjob

Обычное утро. Кофе, стендап, лёгкий PR в репу. И тут в монитор как шарахнет — прод API стал отвечать 5xx. Паника, алерты, PagerDuty в слезах.

📌 Что случилось?
Каждый день в 04:00 по UTC запускался innocently выглядящий cronjob в Kubernetes. Он гонял тяжелую агрегацию по БД и триггерил пересчёт данных в Redis. Всё было нормально… пока нагрузка на базу не выросла, а кластер не стал экономить CPU.

Результат:

* Cronjob выжрал CPU ноды.
* Redis улетел в swap.
* Лимиты на pod’ах не были прописаны.
* Horizontal Pod Autoscaler на проде не догнал ситуацию.
* Пользователи увидели 503.

💡 Выводы, которые я сделал и которые сэкономят вам время и нервы:

1️⃣ Cronjob != безобидный скрипт. Он может быть убийцей.
2️⃣ У cronjob должны быть:

* resource limits/requests
* successfulJobsHistoryLimit
* failedJobsHistoryLimit
* ttlSecondsAfterFinished
3️⃣ Разделяй traffic и batch workloads. Лучше – на уровне неймспейсов/taints.
4️⃣ Логируй отдельно вывод cronjob, а не в общие логи.
5️⃣ Придумай throttling для тяжелых задач. И используй nice / ionice если запускаешь скрипты.

🛡️ А лучше всего — не доверяй cronjob, пока не докажет, что он не пёс-камикадзе.

Подпишись 👉@devopslib
👍8



tgoop.com/devopslib/61
Create:
Last Update:

🔥 Как я чуть не уронил прод из-за cronjob

Обычное утро. Кофе, стендап, лёгкий PR в репу. И тут в монитор как шарахнет — прод API стал отвечать 5xx. Паника, алерты, PagerDuty в слезах.

📌 Что случилось?
Каждый день в 04:00 по UTC запускался innocently выглядящий cronjob в Kubernetes. Он гонял тяжелую агрегацию по БД и триггерил пересчёт данных в Redis. Всё было нормально… пока нагрузка на базу не выросла, а кластер не стал экономить CPU.

Результат:

* Cronjob выжрал CPU ноды.
* Redis улетел в swap.
* Лимиты на pod’ах не были прописаны.
* Horizontal Pod Autoscaler на проде не догнал ситуацию.
* Пользователи увидели 503.

💡 Выводы, которые я сделал и которые сэкономят вам время и нервы:

1️⃣ Cronjob != безобидный скрипт. Он может быть убийцей.
2️⃣ У cronjob должны быть:

* resource limits/requests
* successfulJobsHistoryLimit
* failedJobsHistoryLimit
* ttlSecondsAfterFinished
3️⃣ Разделяй traffic и batch workloads. Лучше – на уровне неймспейсов/taints.
4️⃣ Логируй отдельно вывод cronjob, а не в общие логи.
5️⃣ Придумай throttling для тяжелых задач. И используй nice / ionice если запускаешь скрипты.

🛡️ А лучше всего — не доверяй cronjob, пока не докажет, что он не пёс-камикадзе.

Подпишись 👉@devopslib

BY Библиотека девопса | DevOps, SRE, Sysadmin


Share with your friend now:
tgoop.com/devopslib/61

View MORE
Open in Telegram


Telegram News

Date: |

To view your bio, click the Menu icon and select “View channel info.” The best encrypted messaging apps Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp. With the sharp downturn in the crypto market, yelling has become a coping mechanism for many crypto traders. This screaming therapy became popular after the surge of Goblintown Ethereum NFTs at the end of May or early June. Here, holders made incoherent groaning sounds in late-night Twitter spaces. They also role-played as urine-loving Goblin creatures. Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.”
from us


Telegram Библиотека девопса | DevOps, SRE, Sysadmin
FROM American