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:
Publicar un comentario