fix: crowdsec-sync v3 — CPU 109pct->0.1pct, sans set-e, O(n log n) comm diff
This commit is contained in:
parent
23237d10f9
commit
c478ac92e1
|
|
@ -37,3 +37,30 @@ Attendu : IP presente dans ipset list crowdsec-blacklist ET regle DROP active da
|
||||||
|
|
||||||
## References
|
## References
|
||||||
- https://docs.crowdsec.net
|
- https://docs.crowdsec.net
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## BUG CRITIQUE — sync.sh O(n2) CPU 109pct (resolu 2026-06-29)
|
||||||
|
|
||||||
|
### Symptome
|
||||||
|
crowdsec-firewall-bouncer consomme +100pct CPU en continu.
|
||||||
|
|
||||||
|
### Cause
|
||||||
|
Double boucle for IP in NEW_IPS grep-qxF dans CURRENT_IPS :
|
||||||
|
O(n2) grep-forks toutes les 10 secondes. 50+ IPs = 2500 forks/cycle.
|
||||||
|
|
||||||
|
### Cause restart loop (v2 echec)
|
||||||
|
set -e dans script ash : commandes || chaines sans || true final = exit 1 immediat.
|
||||||
|
pipe cmd | while read ; do condition && cmd ; done retourne exit 1 si condition fausse.
|
||||||
|
|
||||||
|
### Fix v3 valide
|
||||||
|
- set -e supprime (poison pour daemon ash)
|
||||||
|
- comm -23 / comm -13 sur fichiers tries : O(n log n), zero fork imbrique
|
||||||
|
- while read < file au lieu de cmd | while read (pas de subshell, exit code propre)
|
||||||
|
- || true systematique sur toutes les commandes externes
|
||||||
|
- Resultat : 0.1pct CPU stable, zero restart
|
||||||
|
|
||||||
|
### Source rebuild
|
||||||
|
/volume1/docker/crowdsec/bouncer-sync/sync.sh + Dockerfile
|
||||||
|
Image : crowdsec-sync:dsm
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue