jueves, 1 de marzo de 2007

Dejar de usar shared_servers

Al parecer cuando una instancia de oracle esta marcada como shared server no utiliza todos los procesadores, y se limita sólo a uno. Aprovechar 1 CPU de 4 es un problema. Para conseguir que se utilicen todo hay que eliminar esto. Vamos por pasos

1) comprobamos las CPUS que tenemos:

SHOW PARAMETER cpu;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cpu_count integer 4
parallel_threads_per_cpu integer 2

2) Si usamos linux podemos usar algunos comandos para comprobar la carga de CPU del sistema. Dos de estos comandos son:

mpstat -P ALL 3 --> muestra la información de todos los procesadores, y actualiza cada 3 segundos

top --> muestra todos los procesos y el consumo de los recursos del sistema.

3) Podemos ver los parámetros usando:
show parameter shared_servers
show parameter servers

mostrará todos los parámetros que contengan la cadena de texto. Si está fijado a 1 el parámetro shared_servers es que la instancia esta en modo shared.

4) Para cambiar el parámetro tendremos que utilizar

alter system set shared_servers = 0;

Al fijar este parámetro ningún cliente podrá conectarse en modo shared, sin embargo puede que haya todavía algunas conexiones en modo shared. Si los parámetros SHARED_SERVERS y MAX_SHARED_SERVERS los fijamos a 0, todos los servers se finalizaran y las peticiones de los restantes clientes se encolarán hasta que el valor de SHARED_SERVERS o MAX_SHARED_SERVERS se incrementen

5) para finalizar todos los dispatcher hay qe introducir:
ALTER SYSTEM SET DISPATCHERS = '';

6) podemos usar las vistas V$DISPATCHER yV$SHARED_SERVER para comprobar si existen conexiones shared

select * from V$DISPATCHER;
select * from V$SHARED_SERVER;

No hay comentarios: