Re: Consulta PyReplica

From: Javier Fritz Alsite <jfritz(dot)aliste(at)gmail(dot)com>
To:
Cc: pgsql-es-ayuda(at)postgresql(dot)org, Mariano Reingart <reingart(at)gmail(dot)com>
Subject: Re: Consulta PyReplica
Date: 2009-10-14 15:26:49
Message-ID: 4AD5EDB9.104@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hola Mariano.<br>
<br>
&nbsp;&nbsp;&nbsp; Me interesa mucho ver como seria el formato que planeas para
agilizar el proceso, quizas puedo ayudar ;).<br>
<br>
En cuanto a la espera en time.sleep(60) la baje considerablemente a 5,
ayudo a reducir el tiempo entre&nbsp; reintentos&nbsp; y el Time out lo setee a
'1'. <br>
El resultado mejora bastante.<br>
<br>
probare el 'NOWAIT'&nbsp; en&nbsp; pyreplica.py, revisare como funciona la
configuraci&oacute;n ;)<br>
<br>
Saludos y gracias.<br>
<br>
<br>
Mariano Reingart wrote:
<blockquote
cite="mid:5aebd8250910140726i15f1f50sbc634c6172020dc8(at)mail(dot)gmail(dot)com"
type="cite">
<pre wrap="">2009/10/13 Javier Fritz Alsite <a class="moz-txt-link-rfc2396E" href="mailto:jfritz(dot)aliste(at)gmail(dot)com">&lt;jfritz(dot)aliste(at)gmail(dot)com&gt;</a>:
</pre>
<blockquote type="cite">
<pre wrap="">Hola.

&nbsp;&nbsp;&nbsp; Como ya he comentado estoy instalando un "cluster de replicacion" basado
en PyReplica, creo que todo va bastante bien, ahora estoy ajustando algunos
valores para mejorar la performance. El punto que busco solucionar ahora es
el tiempo desde que ocurre un error, normalmente por concurrencia, hasta que
se reintenta la ejecuci&oacute;n.

</pre>
</blockquote>
<pre wrap=""><!---->
Hola Javier, el tema de la performance ante concurrencia es un punto
que lo tengo visto con pyReplica.
Para que sea compatible con versiones de posgresql antiguas, no usa id
de transacciones (txid), por lo que bloquea los registros a replicar y
usa commit en dos fases.
En futuras versiones tengo planeado no bloquear esta tabla y usar las
txid para agilizar el tema, evitar los bloqueos y los commits en dos
fases, lo que deber&iacute;a acelerar mucho el proceso.
Si te interesa te puedo comentar como ser&iacute;a.

</pre>
<blockquote type="cite">
<pre wrap="">&nbsp;&nbsp;&nbsp; Buscando en los archivos de PyReplica encontre un valor que se pueden
manejar para mejorar el tiempo de respuesta: time out entre selects, lo
ajuste a 3 seg, funciona mucho mejor, por defecto viene con 60 segs,
pensando que estos servidores son exclusivos para el servicio de postgres, y
atienden a 5 usuarios mas 2 esclavos de PyReplica. El problema principal
sucede cuando dos nodos esclavos intentan leer el mismo registro de forma
concurrente, es un error conocido y se acepta su condicion, pero el problema
es el tiempo que demora en reintetar la ejecuci&oacute;n del query, a pesar de
mejorar el rendimiento con el cambio mencionado, creo que aun es lenta la
reacci&oacute;n del servidor esclavo en reintentar la ejecuci&oacute;n, demora mucho mas
de tres segundos.

</pre>
</blockquote>
<pre wrap=""><!---->
Cambiaste la linea que espera entre reintentos no?
daemon.py, clase Replicator, m&eacute;todo run:

time.sleep(60)

Este es el valor que duerme entre error y error, para que no sature el
servidor en caso de que haya problemas de conectividad o similar.

</pre>
<blockquote type="cite">
<pre wrap="">Existe algun otro ajuste que pueda realizarse a los valores por defectos de
PyReplica.
</pre>
</blockquote>
<pre wrap=""><!---->
Podes intentar que el SELECT no se bloquee agregando NOWAIT, con ello
no va a esperar y deber&iacute;a reintentar m&aacute;s rapidamente si ten&eacute;s alta
concurrencia:
pyreplica.py, funci&oacute;n replicate:

cur0.execute("SELECT id,sql FROM replica_log "
"WHERE NOT %s %s "
"ORDER BY id ASC FOR UPDATE NOWAIT" % (slave_field, sql) ,args)

Cualquier cosa avisame,
Sds
Mariano

</pre>
</blockquote>
<br>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 3.7 KB

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2009-10-14 16:02:19 RE: Postgres con 16GB de RAM
Previous Message Juan_Márquez 2009-10-14 14:54:35 Re: Postgres con 16GB de RAM