On Sat, 1 Oct 2022 at 19:03, Edwin Quijada <listas_quij...@hotmail.com> wrote:
> Un problema que tuve con el OOMKiller fue por culpa de un drive ODBC, lanzaba 
> desde Xcell una conexion al servidor con un query bien complicado y la verdad 
> no se pq cuando este cquery corria me tumbaba el servidor pero si lo corria 
> directamente en la consola no pasaba nada.
> Puede que sea bajo una de esta premisa, un query mal hecho, puede darte al 
> traste con el servidor Tambien

A ver, un servidor bien configurado no deberia ser tumbado por un
query mal, o maliciosamente, hecho. Digo tumbado, en el que no cuento
que se quede un tiempo infinito calculando o que aborte el query por
execeso de consumo de algun recursos.

El problema del OOM killer, mas bien del overcommit, es que postgres
necesita correr en un sistema operativo que no le mienta, que si le
dice que le da un giga se lo de de verdad. Un linux con overcommit NO
cumple esas condiciones. De todas formas aqui  el query no tumba al
servidor, es el SO el que lo mata, que lo mismo se podria hacer
poniendo un "kill -9 ramdon()" suelto por ahi.

El overcommit es para cuando se tienen programas que no usan todo lo
que piden. Pg no es de esos. Normalmente para un servidor de BD lo
suyo es determinar que necesita y empezar sin swap ni overcommit, no
le van a ayudar. Una vez dicho esto es obvio que un poco de swap puede
ayudar ( a p.e. transformarte un piñazo total en un slowdown
recuperable ( dificilmente, pero recuperable ) ) y un minimo de
overcommit, si se sabe un webo de eso, tambien ( aunque el overcommit
tiene el riesgo de que OTRO programa malo mate al servidor ).

Si el servidor esta correcto, las queries no deberian matarlo. Ahora,
si el Pg corre en un SO que mata procesos con criterios creativos, un
query puede engañar al SO para que mate al Pg que no debe.

Mandar al servidor un query que no pueda procesar por falta de espacio
es trivial para probar esto, un producto cartesiano adecuado y
explota, probablemente un generate_series adecuado tambien, no se
necesitan queries complicadas. Asi a pelo, me da que un "select
generate_series(1,2^64-1), random() order by 2" tiene que fornicar un
rato.

FOS


Reply via email to