Luca Polidoro wrote:
Salve, volevo sottoporre una problematica che stiamo riscontrando
sulla nostra infrastruttura ldap. L'architettura è composta da 1
master e da 16 repliche. Sono tutte Solaris 9 Sparc, e la versione di
OpenLdap usata è la 2.3.39. La replica è affidata al syncrepl di tipo
refreshOnly, e avviene ogni 15 minuti. I thread sono settati a 16, per
tutte le macchine. La scrittura dei dati è abilitata soltanto sul
master, mentre le repliche fanno solamente lettura dei vari client che
fanno accesso ai sistemi. Come dicevo prima, da qualche giorno stiamo
avendo  dei problemi con lo slapd sul master. Infatti analizzando i
dati forniti dal prstat, vediamo che, mentre l'occupazione della cpu
si mantiene su valori normali (tra il 2% e il 17%), i valori della
memoria occupata dal processo, Size e la RSS, salgono  continuamente,
sino ad arrivare ad un valore, 3942 per il Size e  2262 per l'RSS,
dopo il quale il processo muore (appena partito il processo sale
velocemente a valori alti solo sul master, sulle repliche no)..
Abbiamo notato che ogni 7 ore circa il processo va giù. E' possibile
che questo comportamento anomalo sia  dovuto all' numero elevato di
Repliche che si collegano direttamente al Master con il syncrepl?
Esiste per il syncrepl, un numero massimo, o comunque un numero
massimo consigliato, di repliche che possono collegarsi al Master,
oltre il quale possono sussistere problemi come quello sopra
evidenziato?

Non esiste alcun limite al numero di repliche, se non appunto legato all'esaurimento delle risorse. In ogni caso, non dovrebbero esserci particolari ragioni per cui la presenza di connessioni da parte di consumer syncrepl debba risultare in un uso spropositato di risorse sul producer. Questo puo' essere una conseguenza di una memory leak o di una malconfigurazione di slapd, che consente a back-bdb e Berkeley DB un ammontare di memoria eccessivo rispetto a quanto effettivamente disponibile. Per verificare la presenza di memory leak ti consiglio di eseguire slapd producer sotto un memory profiler (ti direi valgrind, se non fosse intel-specific; non ho suggerimenti per Solaris/sparc).

Inoltre, abbiamo notato anche un comportamento strano del syncrepl.
Infatti in alcune situazioni, ancora non abbiamo capito con esattezza
quali, il processo di replica risulta non funzionante. Per farlo
riandare dobbiamo passare i vari consumer a refreshAndPersist, e
successivamente ritornare alla situazione refreshOnly.  In questa
maniera il processo di replica torna a funzionare correttamente.

Modificare il "type" non e' una soluzione valida (anche se funziona come "rattoppo"). Il motivo per cui la replicazione non avviene correttamente non e' chiaro, ma se la replicazione e' parziale o errata, e syncrepl non si accorge di dover fare un full resync, dovrebbe essere sufficiente riavviare gli slapd consumer, eventualmente resettando il cookie da usare (opzione -c "rid=<rid>"). Questa operazione non richiede necessariamente il riavvio di slapd se usi back-config. In tale caso, basta cancellare e riaggiungere l'attributo olcSyncRepl relativo. Nota che si tratta comunque di un workaround per un problema che syncrepl dovrebbe trovare da solo.

In ogni caso, dato che 2.3.39 e' piuttosto vecchia, ti consiglio un aggiornamento, preferibilmente a 2.4.12/14 (quest'ultima prossima all'uscita; verifica il changelog per la quantita' di fixes in quest'area sia in 2.3 che in 2.4).

Ciao, p.


Ing. Pierangelo Masarati
OpenLDAP Core Team

SysNet s.r.l.
via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
-----------------------------------
Office:  +39 02 23998309
Mobile:  +39 333 4963172
Fax:     +39 0382 476497
Email:   a...@sys-net.it
-----------------------------------

_______________________________________________
OpenLDAP mailing list
OpenLDAP@mail.sys-net.it
https://www.sys-net.it/mailman/listinfo/openldap


Rispondere a