Een bewaking die alleen kan stoppen, maakt van een korte storm een lange stilstand

Mijn agents draaien dag en nacht op een eigen server. Een storm van een paar minuten kostte me ruim twee uur stilstand. Niet door de storm, maar door de bewaking.
Wat een forkstorm is
Elk programma doet zijn werk via processen. Een forkstorm is een server die zo snel nieuwe processen start en weer stopt, dat hij nergens anders meer aan toekomt. Geheugen en rekenkracht lijken vrij, en toch is alles traag.
Normaal start mijn server ongeveer 70 processen per seconde. In een storm zag ik er meer dan 900, en bij een eerdere storm meer dan 1.200. Bij mensen komt dit zelden voor. Bij agents wel: een agent die een toets draait, doet dat met tientallen kleine opdrachten tegelijk, en 's nachts werken er meerdere agents naast elkaar zonder dat ze van elkaar weten.
Wat er misging
Ik heb een bewaking die dit ziet, de veroorzaker aanwijst en die bevriest. Dat deed hij ook. Maar bevriezen is een ingreep die iemand ook weer ongedaan moet maken. Het was avond, er keek niemand, en het hart van het werk bleef bevroren. Elke agent stond stil. De storm zelf duurde minuten. De stilstand duurde ruim twee uur.
Een bewaking die alleen kan stoppen, verandert een korte storm in een lange stilstand.
Wat ik veranderde
- Na vijf rustige minuten ontdooit de bewaking zelf.
- Het hart van het werk blijft nooit langer dan tien minuten bevroren, ook niet als de storm doorgaat.
- Komt de storm snel terug bij dezelfde veroorzaker, dan stop ik alleen die, niet het hart.
Ik test dit echt: de toets start zelf een fork-lus, eist dat die bevroren wordt en daarna weer aan gaat.
Waarom geen harde grens
De simpelste oplossing is een plafond op het aantal processen per seconde. Dat heb ik bewust niet gedaan. De toetsen die ik elk half uur draai, halen soms ruim 3.000 per seconde, en dat is bedoeld werk. Een harde grens knijpt dat af, of is zo ruim dat hij een echte storm niet vangt. Ik wil de server maximaal benutten.
Wat wel werkt: onderscheid maken tussen bedoeld zwaar werk en onbedoeld zwaar werk, en elke ingreep omkeerbaar en tijdelijk maken.
Wat je hieruit meeneemt
- Meet het ritme van je server, niet alleen de belasting. Eén regel per minuut is genoeg.
- Laat een agent zijn werk bundelen: niet één proces per stukje werk, en niet alles tegelijk.
- Een bewaking die kan stoppen, moet ook kunnen herstarten.
- Geef elke ingreep een tijdslimiet. "Tot een mens kijkt" is geen limiet.
Dit is hetzelfde patroon als in Het autonome AI-bedrijf: een rol met een bevoegdheid, een beschermende maat en een mens als laatste stap. Een mens die niet altijd kijkt, vraagt om een systeem dat zichzelf weer loslaat.
Zie ook
AI in een werkproces zetten: van opschrijven tot meten
Veel organisaties beginnen met AI bij het gereedschap: welk hulpmiddel, welk abonnement, welke koppeling. Daarna lopen ze vast op iets anders: wat moet het hulpmiddel in het werk precies doen, en hoe merk je of het goed…
Tweehonderdvijftig euro en niets meer: het startkapitaal van een agent
Mijn agents mogen sinds kort echt iets uitgeven. Daar hoort een simpele regel bij: elke agent met een goed idee krijgt 250 euro startkapitaal, in totaal, en niets meer.
Een agent bestelt een server. Dit is wat ik hem liet doen, en wat niet
Beetje bij beetje geef ik mijn agents meer ruimte. De eerste echte stap was een server. Dex, mijn Operations-agent, bestelde er een, installeerde er zelf NonStopWorker op en liet zien dat het draaide. Van bestelling tot…


