2. * Consideraciones para el Hardware
* Consideraciones para el Sistema Operativo
* Consideraciones para PostgreSQL
Tabla de Contenido
3. Consideraciones para el Hardware
-Procesador: Multi-core de última generación o-Procesador: Multi-core de última generación o
4 vCPU. Mínimo 4 core4 vCPU. Mínimo 4 core
-Memoria: Mínimo 8 Gb RAM-Memoria: Mínimo 8 Gb RAM
-Discos: SATA con 3 Mb Cache. Mínimo 2 o 4-Discos: SATA con 3 Mb Cache. Mínimo 2 o 4
Discos de alta Velocidad (preferible SCSI yDiscos de alta Velocidad (preferible SCSI y
SAS)SAS)
-Espacio en disco: Mínimo 250 Gb-Espacio en disco: Mínimo 250 Gb
-Velocidad del disco: 7 K, 10 K o 15 K-Velocidad del disco: 7 K, 10 K o 15 K
-Conectividad: 1 Gb-Conectividad: 1 Gb
-Controladora: RAID 1+0 / 0+1 por hardware-Controladora: RAID 1+0 / 0+1 por hardware
con batería.con batería.
5. Materiales y métodos
ConsideracionesConsideraciones para el Sistema Operativopara el Sistema Operativo
-FreeBSD x64-FreeBSD x64
-OpenBSD x64-OpenBSD x64
-RedHat x64-RedHat x64
-Centos x64-Centos x64
-Solaris x64-Solaris x64
-Debian x64-Debian x64
Sistema de archivo:Sistema de archivo:
-XFS (VFS, ZFS o familia)-XFS (VFS, ZFS o familia)
6.
7. max_connections:max_connections: Número de sesionesNúmero de sesiones
simultáneassimultáneas
[no debe ser mayor que las conexiones[no debe ser mayor que las conexiones
necesarias, incluso cuando está inactiva, en lanecesarias, incluso cuando está inactiva, en la
mayoría de los casos una conexión pasaría másmayoría de los casos una conexión pasaría más
tiempo esperando en IDLE. Una buena fórmulatiempo esperando en IDLE. Una buena fórmula
es "número de hilos + número de procesadores +es "número de hilos + número de procesadores +
cantidad de servicio"]cantidad de servicio"]
work_mem:work_mem: Cantidad máxima de memoria queCantidad máxima de memoria que
se utilizará para los resultados intermedios, talesse utilizará para los resultados intermedios, tales
como tablas hashcomo tablas hash
[se puede calcular por cada subconsulta, por lo[se puede calcular por cada subconsulta, por lo
que una consulta con 5 HASHJOINS podríaque una consulta con 5 HASHJOINS podría
costar 5 * work_mem. Las distintas sesionescostar 5 * work_mem. Las distintas sesiones
consumen esta cantidad. (una razón para seguirconsumen esta cantidad. (una razón para seguir
bajando max_connections)]bajando max_connections)]
Consideraciones para PostgreSQL
8. shared_buffers:shared_buffers: Cantidad de memoria dedicadaCantidad de memoria dedicada
a espacio de búfer 'clavado'.a espacio de búfer 'clavado'.
[establecerlo en 1/4...1/2 acerca de toda la[establecerlo en 1/4...1/2 acerca de toda la
memoria "libre" disponible]memoria "libre" disponible]
effective_cache_size:effective_cache_size: Cantidad de memoria queCantidad de memoria que
se supone será utilizada por LRU del OS.se supone será utilizada por LRU del OS.
[establecer effective_cache_size a toda la[establecer effective_cache_size a toda la
memoria "libre" disponible]memoria "libre" disponible]
random_page_cost:random_page_cost: Estimación del costeEstimación del coste
relativo de búsquedas en disco.relativo de búsquedas en disco.
[costo de posicionamiento + leectura de disco. Es[costo de posicionamiento + leectura de disco. Es
con respecto a la "sequential_disk_cost", que escon respecto a la "sequential_disk_cost", que es
1. El valor por defecto es (4) demasiado alto para1. El valor por defecto es (4) demasiado alto para
las máquinas modernas y almacenamiento enlas máquinas modernas y almacenamiento en
red, normalmente se puede bajar entre 2 y 1.x]red, normalmente se puede bajar entre 2 y 1.x]
Consideraciones para PostgreSQL
9. maintenance_work_mem:maintenance_work_mem: Usada enUsada en
operaciones del tipo VACUUM, ANALYZE,operaciones del tipo VACUUM, ANALYZE,
CREATE INDEX, ALTER TABLE, ADDCREATE INDEX, ALTER TABLE, ADD
FOREIGN KEY.FOREIGN KEY.
[Su valor dependerá mucho del tamaño de[Su valor dependerá mucho del tamaño de
nuestras bases de datos. En un servidor con 8nuestras bases de datos. En un servidor con 8
Gb de memoria, podemos usar 512 Mb comoGb de memoria, podemos usar 512 Mb como
valor inicial]valor inicial]
autovacuum:autovacuum: Permitir se limpie nuestra base dePermitir se limpie nuestra base de
datos según el plan internodatos según el plan interno
[nos olvidamos de tener que programar esta[nos olvidamos de tener que programar esta
tarea]tarea]
password_encryption:password_encryption: Si activamos estaSi activamos esta
opción, al usar CREATE USER WITHopción, al usar CREATE USER WITH
PASSWORD, pero sin ponerle encrypted, nosPASSWORD, pero sin ponerle encrypted, nos
encryptara el password de todas formas,encryptara el password de todas formas,
evitando así el tener passwords en texto plano.evitando así el tener passwords en texto plano.
Consideraciones para PostgreSQL
10. ssl:ssl: Establecer conexiones encryptadas alEstablecer conexiones encryptadas al
servidorservidor
[Para poder activar esta opción, tendremos que[Para poder activar esta opción, tendremos que
generar un certificado y configurar un par degenerar un certificado y configurar un par de
cosas en el archivo pg_hba.conf]cosas en el archivo pg_hba.conf]
Tablespaces en discos distintos:Tablespaces en discos distintos:
-tablas muy grandes-tablas muy grandes
-tablas particionadas-tablas particionadas
-indices grandes-indices grandes
-carpeta pg_xlog-carpeta pg_xlog
Consideraciones para PostgreSQL
11. Monitorea todo:Monitorea todo:
-Uso de los procesadores (y sus cores)-Uso de los procesadores (y sus cores)
-Discos que más escriben-Discos que más escriben
-Discos que más se leen-Discos que más se leen
-Uso de la memoria-Uso de la memoria
-Horas picos o de alto impacto para el servidor-Horas picos o de alto impacto para el servidor
Usa las herramientas:Usa las herramientas:
-nagios, munin, etc.-nagios, munin, etc.
Consideraciones para PostgreSQL