Configuramos uma nova máquina com Windows 2003 Enterprise (SP2)
e SQL SERVER 2000 Enterprise com SP4 e fix do awe.
Essa maquina contem 4 processadores dual core com 12 GB de RAM
Logo apos algumas semanas de utilização, começou a dar alguns erros estranhos no log do sql.
"Process ID 104:192 owns resources that are blocking processes on Scheduler 4."
Já verifiquei no site da microsoft sobre esse erro acima, e fala pra instalar o SP4 , como já esta feito.
WARNING: Failed to reserve contiguous memory of Size= 131072.
2007-07-01 15:17:41.82 spid80 Buffer Distribution: Stolen=10750 Free=9194 Procedures=54255
Inram=0 Dirty=87828 Kept=0
I/O=0, Latched=680, Other=1160685
2007-07-01 15:17:41.82 spid80 Buffer Counts: Commited=1323392 Target=1323392 Hashed=1249193
InternalReservation=1242 ExternalReservation=0 Min Free=1856 Visible= 326304
2007-07-01 15:17:41.82 spid80 Procedure Cache: TotalProcs=17308 TotalPages=54255 InUsePages=15854
2007-07-01 15:17:41.82 spid80 Dynamic Memory Manager: Stolen=65005 OS Reserved=12528
OS Committed=12489
OS In Use=9895
Query Plan=54096 Optimizer=0
General=16111
Utilities=270 Connection=3626
2007-07-01 15:17:41.82 spid80 Global Memory Objects: Resource=3260 Locks=146
SQLCache=2070 Replication=2
LockBytes=2 ServerGlobal=32
Xact=337
Esse erro acima, esta ocorrendo diversas vezes.
estava alocado 10 gb para o sql.
startsubprocess: Limit on 'Max worker threads' reached.
A configuração de work threads esta configurada como 255, padrão.
Gostaria de saber também se alguem já alterou esse tipo de configurações para servidores com vários processadores.
Qualquer dica sobre qualquer erro acima, ficarei grato..
Registrado em: Sep 13, 2005 Mensagens: 92 Localização: Rio de Janeiro/RJ
Enviada: 02 Jul 2007 10:26 Assunto:
wsqlcount, amigo realmente esse era um Bug antigo do SQL Server 2000 antes do SP4.
Por favor, você poderia colocar aqui o print screen do boot.ini?
E também pode executar um sp_configure na sua instância de sql e postar aqui?
Em seguida rode um DBCC MEMORYSTATUS e também poste aqui.
Vou aguardar esses dados para continuarmos com o debug deste problema, ok? _________________ Abraços,
DYNAMIC MEMORY MANAGER
Stolen 22193
OS Reserved 1520
OS Committed 1498
OS In Use 1492
General 2311
QueryPlan 17860
Optimizer 0
Utilities 160
Connection 1962
Explicação: "min server memory" quando você configura este parâmetro o SQL Server já inicia buscando essa quantidade de memória mínima pra ele ser executado, isso é desnecessário pois quando vc configura AWE ele já deixa alocado a qtd máxima e vai utilizando essa qtd conforme precisa.
Explicação 1: "max worker threads", quando vc trabalha em um ambiente 32 bits (x86), essa é a quantidade de worker threads o SQL aloca em cada processador, muitoa mais que isso pode gerar contenção e deixar o servidor lento.
- Explicação 3: "priority boost", com esta opção você está priorizando o SQL para executar em High level (13), ou seja ele vai ter prioridade acima dos outros processos, isso pode não ser muito bom pois pode aumentar a concorrência dos outros processos para utilizar a CPU e acabar causando gargalo nos processadores.
OBS: Na saída do sp_configure, estou vendo que você não enviou o Affinity Mask, você alterou as configurações pra este parâmetro?
OBS2: "Max Server Memory", é aconselhável deixa livre para o SO sempre 1GB no caso de Widows 2003, mas eu costumo deixar 1.5 ou mais, pois sempre temos outros processos rodando na máquina que precisam de memória.
Já olhei a configuração do seu Boot.ini e está correta, vou ver como está a distribuição de memória e qualquer coisa retorno. _________________ Abraços,
Com relação a "'max worker threads", meu servidor tem 16 processadores (4 x 2 nucleos), e esta ocorrendo um erro:
"startsubprocess: Limit on 'Max worker threads' reached."
Uma tabela diz que com mais de 8 processadores, é aconselhavel utilizar 288 ou 300.
Porem, o erro ainda continua ocorrendo.
Com relação ao priority boost, o servidor é dedicado, sendo utilizado somente o SQL server no servidor.
Porem, o problema de memoria e thread ainda vem ocorrendo.
Registrado em: Sep 13, 2005 Mensagens: 92 Localização: Rio de Janeiro/RJ
Enviada: 04 Jul 2007 09:29 Assunto:
Cara, veja o que diz no Books Online sobre Max Worker Threads:
max worker threads Option
Use the max worker threads option to configure the number of worker threads available to Microsoft® SQL Server™ processes. SQL Server uses the native thread services of the Microsoft Windows NT® 4.0 or Windows® 2000 operating system so that one or more threads support each network that SQL Server supports simultaneously; another thread handles database checkpoints; and a pool of threads handles all users.
Thread pooling helps optimize performance when large numbers of clients are connected to the server. Usually, a separate operating system thread is created for each client connection to consume fewer system resources. However, with hundreds of connections to the server, using a thread-per-connection can consume large amounts of system resources. max worker threads enables SQL Server to create a pool of worker threads to service a larger number of client connections, which improves performance.
The default setting for max worker threads (255) is best for most systems. However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance.
When the actual number of user connections is less than the amount set in max worker threads, one thread handles each connection. However, if the actual number of connections exceeds the amount set in max worker threads, SQL Server pools the worker threads so that the next available worker thread can handle the request.
When the maximum number of worker threads is reached, SQL Server returns the following message:
The working thread limit of 255 has been reached.
Because Windows 98 does not support thread pooling, the option has no effect on those systems.
max worker threads is an advanced option. If you will be using the sp_configure system stored procedure to change the setting, you can change max worker threads only when show advanced options is set to 1. The system must be stopped and restarted in order for the new setting to take effect.
Quanto a essa tabela você encontrou onde? As configurações avançadas devem ser alteradas somente em casos específicos onde a relação benefício x performance seja satisfatório.
Eu entendo que seu servidor seja dedicado SQL Server, porém ele pode estar impedindo dos processos do SO de trabalhar pois a prioridade é do SQL Server, isso pode estar te prejudicando.