sql >> Databáze >  >> RDS >> Sqlserver

Kdy mohu hostovat IIS a SQL Server na stejném počítači?

Není rozumné spouštět SQL Server s jakýmkoli jiný produkt, včetně jiné instance SQL Server. Důvodem tohoto doporučení je povaha toho, jak SQL Server využívá prostředky operačního systému. SQL Server běží na infrastruktuře správy paměti uživatelského režimu a plánování procesoru s názvem SQLOS . SQL Server je navržen tak, aby běžel při maximálním výkonu a předpokládá, že je jediným serverem v operačním systému. Operační systém SQL jako takový rezervuje veškerou RAM na stroji pro proces SQL a vytváří plánovač pro každé jádro CPU a přiděluje úkoly všem plánovačům ke spuštění, přičemž využívá veškerý CPU, který může získat, když to potřebuje. Protože SQL si vyhrazuje veškerou paměť, ostatní procesy, které potřebují paměť, způsobí, že SQL uvidí tlak v paměti a odezva na tlak paměti vyřadí stránky z vyrovnávací paměti a zkompilované plány z mezipaměti plánů. A protože SQL je jediný server, který skutečně využívá paměť oznámení API (proslýchá se, že příští Exchange bude také), SQL je jediný proces, který se ve skutečnosti zmenšuje, aby dal prostor jiným procesům (jako jsou děravé buggy ASP fondy). Toto chování je také vysvětleno v BOL:Dynamic Memory Management .

Podobný vzorec nastává u plánování CPU, kde jiné procesy kradou čas CPU z plánovačů SQL. Na špičkových systémech a na počítačích Opteron se věci zhoršují, protože SQL používá NUMA lokalitu plně využít, ale žádné jiné procesy si obvykle NUMA neuvědomují, a i když se OS může snažit zachovat lokalitu alokací, nakonec alokují celou fyzickou RAM a snižují celkovou propustnost systému, protože CPU jsou nečinné a čekají na přístup ke stránce přes hranice. Existují i ​​další věci, které je třeba zvážit, jako je TLB a L2 se zvyšuje kvůli dalším procesům, které zabírají cykly CPU.

Takže shrnuto, můžete spouštět jiné servery se serverem SQL, ale nedoporučuje se to. Pokud musíte , pak se ujistěte, že oba servery izolujete podle svých možností. Použijte masky afinity CPU pro obě SQL a IIS/ASP, abyste je izolovali na samostatných jádrech, nakonfigurujte SQL tak, aby rezervoval méně paměti RAM, aby zůstala volná paměť pro IIS/ASP, nakonfigurujte fondy aplikací tak, aby se agresivně recyklovaly, aby se zabránilo růstu fondu aplikací.



  1. init skripty mySQL neběží s docker-compose

  2. MySQL znak vs. int

  3. Jak zabránit tomu, aby uživatel mohl vidět jiné databáze a tabulky z jiných databází?

  4. Neplatné přihlašovací údaje Oracle SQLPlus ORA-01017 při zadávání schématu