Enhver, der kører job i Windows Opgavestyring, vil før eller siden støde på uforklarlige forskelle i kørselstiden. Et PHP-script, der kører på 5 minutter på kommandolinjen, tager pludselig 20 minutter, når det udføres via Windows Opgavestyring. Samme bruger, samme tilladelser, samme kode – fire gange så lang udførelsestid. Hvad foregik der?
Efter timevis af fejlfinding, Process Monitor-sessioner og utallige konfigurationssammenligninger var løsningen skræmmende enkel: Windows Opgavestyring indstiller som standard en lavere procesprioritet. Standardværdien for opgaver i Opgavestyring er 7 (Under normal), ikke 4-6 (Normal) som forventet. Denne tilsyneladende lille forskel kan føre til massiv forringelse af ydeevnen i I/O-intensive operationer.
Windows-prioritetsniveauerne er i detaljer:
| Værdi | Prioritet | Beskrivelse |
|---|---|---|
| 0 | Realtid | Højeste prioritet (forsigtig!) |
| 1 | Høj | Høj prioritet |
| 2-3 | Over normal | Om Normal |
| 4-6 | Normal | Standard for interaktive processer |
| 7 | Under normalen | STANDARD i Opgaveplanlægger |
| 8-9 | Under normalen | Endnu lavere |
| 10 | Ledig | Laveste prioritet |
Problemet med prioritet i opgaveplanlægning er flerlags: Når du eksporterer en opgave og ser på XML-filen, vil du ofte ingen Prioritetsindstilling. Windows vil derefter lydløst bruge standardværdien 7. Den grafiske brugergrænseflade viser denne værdi under eksport, men den gemmes ikke eksplicit i opgaven. Den lavere prioritet resulterer ikke kun i mindre CPU-tid, men også:
- Begrænsede disk I/O-operationer
- Lavere netværksprioritet
- Dårlig caching af filsystemet
- Forsinkelser i databaseadgang
Selv hvis du bruger den samme bruger og aktiverer "Kør med højeste rettigheder", kører opgaven i et andet Windows-stations-/skrivebordsmiljø med andre prioriteter. For at identificere problemet kan du bruge PowerShell til at liste alle opgaver med deres faktiske prioriteter.:
38b7fa6c77dc344401485cd338ea4128
Næsten alle mine opgaver blev prioriteret 7. Vi korrigerer nu specifikt prioriteten for flere opgaver på én gang:
38b7fa6c77dc344401485cd338ea4128
Efter at have indstillet prioriteten til 4 (Normalt) kørte mit PHP-script igen inden for de forventede 300 sekunder. Hvis du har konfigureret opgaver med en bestemt brugerkonto, kan du også nemt angive dette i linje 10 som følger.:
38b7fa6c77dc344401485cd338ea4128