Megosztás a következőn keresztül:


Kiszolgálókonfiguráció: feldolgozói szálak maximális száma

A következőkre vonatkozik:SQL Server

Ez a cikk azt ismerteti, hogyan konfigurálhatja a kiszolgálókonfigurációs beállítást az max worker threads SQL Server Management Studio vagy a Transact-SQL használatával. Ez max worker threads a beállítás konfigurálja az SQL Server-szerte elérhető feldolgozói szálak számát a lekérdezési kérelmek, a bejelentkezés, a kijelentkezés és a hasonló alkalmazáskérések feldolgozásához.

Az SQL Server az operációs rendszerek natív szálszolgáltatásait használja a következő feltételek biztosítására:

  • Egy vagy több szál egyszerre támogatja az SQL Server által támogatott hálózatokat.
  • Egy szál kezeli az adatbázis ellenőrzőpontjait.
  • A szálak készlete minden felhasználót kezel.

A max worker threads alapértelmezett értéke 0. Ez lehetővé teszi, hogy az SQL Server automatikusan konfigurálja a munkavégző szálak számát indításkor. Az alapértelmezett beállítás a legtöbb rendszer esetében a legjobb. A rendszerkonfigurációtól függően azonban egy adott értékre való beállítás max worker threads néha javítja a teljesítményt.

Korlátozások

A lekérdezési kérelmek tényleges száma meghaladhatja a beállított max worker threads értéket, ebben az esetben az SQL Server a feldolgozói szálakat úgy állítja össze, hogy a következő elérhető feldolgozószál kezelni tudja a kérést. A munkavégző szál csak aktív kérésekhez van hozzárendelve, és a kérés kiszolgálása után szabadul fel. Ez akkor is megtörténik, ha a kérelem alapjául szolgáló felhasználói munkamenet/kapcsolat nyitva marad.

A max worker threads kiszolgálókonfigurációs beállítás nem korlátozza a motoron belüli összes szálat. Az olyan feladatokhoz szükséges rendszerszálak, mint a LazyWriter, a Checkpoint, a Naplóíró, a Szolgáltatásközvetítő, a Lock Manager vagy mások, ezen a korláton kívül jönnek létre. A rendelkezésre állási csoportok a max worker thread limit munkavégző szálak egy részét használják, valamint rendszerszálakat is (lásd: Szálhasználat a rendelkezésre állási csoportok által). Ha a konfigurált szálak száma túllépi a konfigurált szálak számát, az alábbi lekérdezés információt nyújt a további szálakat generáló rendszerfeladatokról.

SELECT s.session_id,
    r.command,
    r.status,
    r.wait_type,
    r.scheduler_id,
    w.worker_address,
    w.is_preemptive,
    w.state,
    t.task_state,
    t.session_id,
    t.exec_context_id,
    t.request_id
FROM sys.dm_exec_sessions AS s
    INNER JOIN sys.dm_exec_requests AS r
        ON s.session_id = r.session_id
    INNER JOIN sys.dm_os_tasks AS t
        ON r.task_address = t.task_address
    INNER JOIN sys.dm_os_workers AS w
        ON t.worker_address = w.worker_address
WHERE s.is_user_process = 0;

Ajánlások

Ez a beállítás egy speciális lehetőség, és csak tapasztalt adatbázis-szakembernek kell módosítania.

Ha arra gyanakszik, hogy teljesítményprobléma áll fenn, valószínűleg nem a feldolgozószálak rendelkezésre állása. Az ok nagyobb valószínűséggel a munkavégző szálakat elfoglaló és nem felszabadító tevékenységekhez kapcsolódik. Ilyenek például a rendszer hosszú ideig futó lekérdezései vagy szűk keresztmetszetei (I/O, blokkolás, reteszes várakozások, hálózati várakozások), amelyek hosszú ideig várakozó lekérdezéseket okoznak. A maximális munkaszál-beállítás módosítása előtt érdemes megtalálni a teljesítményproblémák kiváltó okát. A teljesítmény értékeléséről további információt a Teljesítmény figyelése és finomhangolása című témakörben talál.

A szálkészletezés segít optimalizálni a teljesítményt, amikor nagy számú ügyfél csatlakozik a kiszolgálóhoz. Általában minden lekérdezéskéréshez külön operációsrendszer-szál jön létre. Ha azonban több száz kapcsolat van a kiszolgálóval, lekérdezési kérésenként egy szál használata nagy mennyiségű rendszererőforrást képes felhasználni. Ez a max worker threads beállítás lehetővé teszi, hogy az SQL Server feldolgozószálak készletét hozza létre nagyobb számú lekérdezési kérés kiszolgálásához, ami javítja a teljesítményt.

Az alábbi táblázat a maximális feldolgozói szálak automatikusan konfigurált számát mutatja be (ha az érték 0-ra van állítva) a logikai CPU-k, a számítógépes architektúra és az SQL Server különböző verzióinak különböző kombinációi alapján, a következő képlettel: Default Max Workers + ((logikai PROCESSZORok – 4) * Feldolgozók processzoronként).

Logikai CPU-k száma 32 bites számítógép (legfeljebb SQL Server 2014 (12.x)) 64 bites számítógép (legfeljebb SQL Server 2016 (13.x) SP1) 64 bites számítógép (az SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) verziótól kezdve)
<= 4 256 512 512
8 288 576 576
16 352 704 704
32 480 960 960
64 736 1472 1472
128 1248 2496 4480
256 2272 4544 8576

Az 1. szervizcsomaggal rendelkező SQL Server 2016-ig (13.x) a processzoronkénti feldolgozók csak az architektúrától függnek (32 bites vagy 64 bites):

Logikai CPU-k száma 32 bites számítógép 64 bites számítógép
<= 4 256 512
> 4 256 + ((logikai processzorok - 4) * 8) 512 †† + ((logikai processzorok - 4) * 16)

Az SQL Server 2016 -tól kezdve (13.x) az SQL Server már nem telepíthető 32 bites operációs rendszerre. A 32 bites számítógépértékek az SQL Server 2014 -et (12.x) és korábbi verziót futtató ügyfelek segítségére vannak felsorolva. A 32 bites számítógépen futó SQL Server-példányok munkaszálainak maximális száma 1024.

†† Az SQL Server 2017-től (14.x) kezdődően az Alapértelmezett maximális feldolgozók érték 2-vel van osztva a 2 GB-nál kevesebb memóriával rendelkező gépek esetében.

Az SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) verziójától kezdve a processzoronkénti feldolgozók az architektúrától és a processzorok számától függnek (4 és 64 közötti vagy 64-nél nagyobb):

Logikai CPU-k száma 32 bites számítógép 64 bites számítógép
<= 4 256 512
> 4 és <= 64 256 + ((logikai processzorok - 4) * 8) 512 †† + ((logikai processzorok - 4) * 16)
> 64 256 + ((logikai processzorok - 4) * 32) 512 †† + ((logikai processzorok - 4) * 32)

Az SQL Server 2016 -tól kezdve (13.x) az SQL Server már nem telepíthető 32 bites operációs rendszerre. A 32 bites számítógépértékek az SQL Server 2014 -et (12.x) és korábbi verziót futtató ügyfelek segítségére vannak felsorolva. A 32 bites számítógépen futó SQL Server-példányok munkaszálainak maximális száma 1024.

†† Az SQL Server 2017-től (14.x) kezdődően az Alapértelmezett maximális feldolgozók érték 2-vel van osztva a 2 GB-nál kevesebb memóriával rendelkező gépek esetében.

Jótanács

További információ a több mint 64 logikai PROCESSZOR használatáról: Ajánlott eljárások az SQL Server 64-nél több processzort tartalmazó számítógépeken való futtatásához.

Ha minden munkavégző szál aktív, és hosszú ideig futó lekérdezések futnak, előfordulhat, hogy az SQL Server nem válaszol, amíg a munkaszál befejeződik, és elérhetővé nem válik. Bár ez a viselkedés nem hiba, néha nemkívánatos lehet. Ha úgy tűnik, hogy egy folyamat nem válaszol, és nem lehet új lekérdezéseket feldolgozni, akkor csatlakozzon az SQL Serverhez a dedikált rendszergazdai kapcsolat (DAC) használatával, és tiltsa le a folyamatot. Ennek elkerülése érdekében növelje a maximális munkaszálak számát.

Engedélyek

A sp_configure végrehajtási engedélyei paraméterek nélkül vagy csak az első paraméterrel alapértelmezés szerint minden felhasználónak adottak. A konfigurációs beállítás módosításához vagy a sp_configure utasítás futtatásához mindkét paraméterrel rendelkező RECONFIGURE végrehajtásához a felhasználónak rendelkeznie kell a ALTER SETTINGS kiszolgálószintű engedéllyel. A ALTER SETTINGS engedélyt implicit módon a sysadmin és serveradmin rögzített kiszolgálói szerepkörök birtokolják.

Az SQL Server Management Studio (SSMS) használata

  1. Az Object Explorerben kattintson a jobb gombbal egy kiszolgálóra, és válassza a Tulajdonságok lehetőséget.

  2. Válassza ki a Processzorok csomópontot.

  3. A Feldolgozói szálak maximális száma mezőbe írjon be vagy válasszon ki egy értéket 128 és 65 535 között.

Jótanács

Ezzel a max worker threads beállítással konfigurálhatja az SQL Server-folyamatok számára elérhető feldolgozói szálak számát. Az alapértelmezett beállítás max worker threads a legtöbb rendszer esetében a legjobb. A rendszerkonfigurációtól függően azonban a kisebb értékre való beállítás max worker threads néha javítja a teljesítményt. További információkért tekintse meg a cikk Javaslatok szakaszát.

Használd a Transact-SQL-t

  1. Csatlakozzon az adatbázismotorhoz.

  2. A Standard sávon válassza az Új lekérdezés lehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza az Végrehajtás lehetőséget. Ez a példa bemutatja, hogyan használható az sp_configure a max worker threads opció 900 konfigurálásához.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'max worker threads', 900;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

A módosítás a RECONFIGURE végrehajtása után azonnal érvénybe lép anélkül, hogy az adatbázismotort újra kellene indítani.