Trattamento dei blocchi funzionali del Server

Introduzione

La presente documentazione ha lo scopo di dare le principali indicazioni su come vadano gestiti i principali malfunzionamenti del server (HighWay/eXtraWay) in particolare quando essi mostrino di non rispondere più alle sollecitazioni dei client.

Dal momento che le casistiche possono essere particolarmente varie questo documento non può che dare le principali linee guida. Al lettore il compito di comprendere quali indicazioni applicare sulla base dei sintomi rilevati.

Iniziamo quindi a compiere un necessario distinguo: il problema che si rileva può aver luogo dopo aver effettuato un'interruzione dei servizi esistenti ma può anche presentarsi al primo avvio (in assoluto o il primo dopo un reboot della macchina). Va da se che verranno indicate verifiche da compiere che hanno senso solo prima della riesecuzione dei servizi.
Il documento ha l'intenzione di riferirsi ad entrambe i tipi di installazioni (Win32 e Unix). La dove venissero date indicazioni dipendenti dalla piattaforma ciò verrà indicato esplicitamente. Parimenti le principali indicazioni sono riferite al server eXtraWay. Il server HighWay non ha significative differenze, qualora esse dovessero presentarsi verranno evidenziate.

Partiamo quindi dall'iportesi che il server sia in esecuzione e che una o più istanze di esso non siano disponibili, ovvero non rispondano come richiesto. In condizioni normali il server eXtraWay ha un comportamento che potremmo definire connesso. Esso viene contattato da un client il quale mantiene attiva la connessione col server sino al termine della sua vita utile. Altri servizi, come ad esempio il servizio HTTP, sono invece basati su un dialogo che è composto da continue connessioni, esecuzioni delle operazioni in tempi contenuti ed interruzione delle connessioni per procedere, in seguito, a nuove aperture, esecuzioni e così via.

Come abbiamo detto, il comportamento del server eXtraWay è invece diverso. Quello che ci si deve quindi aspettare da esso è che attenda comandi sul socket connesso e sullo stesso renda le proprie risposte.

Vediamo quindi, partendo da quest'ipotesi, cosa può essere rilevato.

In primo luogo il client potrebbe non riuscire più a prendere contatto col server, vale a dire, il socket connesso con il quale si effettuava il dialogo risulta rotto. Ciò comporta che il server dal lato opposto è presumibilmente andato in errore e che questo ha causato la chiusura della comunicazione.
Solitamente questa condizione di malfunzionamento richiede esclusivamente che la connessione venga ripristinata dal client in quanto non c'è motivo di ritenere che il server Master non sia comunque in ascolto e disponibile a costituire una nuova connessione.

Nota:
Il server che si chiude, più o meno naturalmente, libera la licenza da esso occupata. Ne deriva che, sino a prova contraria, il server Master non avrà difficoltà a consentire una nuova connessione in quanto non ci saranno licenze maldestramente mantenute impegnate.

Qualora la connessione non venisse ripristinata alla successiva richiesta si ha evidenza del fatto che il problema affligge anche il server Master. In questo caso è necessario verificare che le licenze non risultino effettivamente tutte occupate e che al contempo il servizio sia ancora attivo.
Quando il server risulti disattivo o non più rispondente alle sollecitazioni di un client può essere necessario intervenire con un'interruzione dei servizi ed una loro riattivazione. Anche quest'operazione può nascondere delle problematiche di ripartenza.

Di seguito i dettagli di tutti gli aspetti principali del tema trattato.

Verifica delle connessioni attive.

Come detto in più occasioni, il server è abilitato per un certo numero di licenze. Questo comporta che il server consentirà un pari numero di connessioni con altrettanti client, indipendentemente da quanti operatori possono avvalersi di ogni singolo client. Chiaramente il server non consente di compiere più connessioni di quelle ammesse rifiutandole e lasciando una traccia nel proprio file di log. (Interpretazione dei Logs)

Nota:
L'alimentazione del file di log con queste informazioni interessa solo il server eXtraWay. Per quanto concerne il server HighWay quest'informazione non viene registrata.

In generale, comunque, è possibile stabilire quante siano le connessioni attualmente attive avvalendosi del comando...

netstat -a

...eventualmente coadiuvato dal comando grep...

netstat -a | grep 4859

...dove 4859 è il numero della porta utilizzata dal server eXtraWay.
Per gli altri numeri di porta confrontare Elenco dei numeri di porta Tcp/Udp utilizzati dai programmi HighWay/eXtraWay.
L'elenco ottenuto mostra quante siano le connessioni pendenti e da quali IP Address esse provengano.

Windows Only:
Il server Win32 consente di prendere visione di quest'elenco anche accedendo al dialogo di informazioni (ottenuto facendo un semplice click sull'icona di eXtraWay nella Tray Bar ovvero dalla voce Informazioni nel menù dell'icona del server Highway) e da esso premendo il tasto Connessioni in Corso.
Da questo stesso dialogo è possibile determinare il numero di licenze attive che appare a destra del numero di serie, separato da esso per mezzo di un trattino.
Unix Only:
Il numero di licenze attivate ed altre informazioni di servizio può essere ottenuto eseguendo il server (sia HighWay che eXtraWay) con il parametro -v.

Il numero delle connessioni pendenti non può superare il numero delle licenze ma dall'analisi dell'IP Address delle macchine client si può comprendere se risultino pendenti delle connessioni che non hanno più motivo di esistere. In tal caso alcuni client potrebbero legittimamente volersi connettere senza trovare disponibilità di licenze libere per un errore del server. Si da il caso, infatti, che esistano condizioni in cui il server subisce l'interruzione della connessione col client senza che questo gli risulti evidente. La connessione viene quindi considerata ancora aperta ed attiva senza quindi che il server abbia alcun motivo valido per ritenerla interrotta.

Nota:
E' allo studio un metodo per ovviare a quest'inconveniente.

Una volta stabilito se esistono connessioni che risultino erroneamente attive si può provvedere alla loro eliminazione secondo questi metodi:

Unix Only:
Non potendo identificare, se non con lo studio dei files di log, quali dei server siano connessi ad un socket che non risulta più essere valido, la sola soluzione percorribile risulta l'interruzione dei servizi e la loro riattivazione.
Windows Only:
Accedendo al dialogo descritto precedentemente è possibile identificare le singole connessioni e, con l'apposito tasto Termina, provvedere ad abbattere solo ed esclusivamente la connessione reputata inutilizzata. Qualora questa procedura non si potesse seguire si può agire come nel caso Unix con l'abbattimento e la riattivazione dei servizi.

Le procedure descritte, se ci si deve avvalere dell'interruzione dei servizi, possono scaturire in un ulteriore caso: la mancata ripartenza dei servizi. Come accennato all'inizio, questo caso può verificarsi sia in condizioni come questa ripartenza, sia alla prima attivazione del server.
In questi casi è molto probabile che il problema vada ricercato nella presenza della porta del server ancora impegnata a causa della chiusura presumibilmente irregolare dei servizi. (Vds. Socket Impegnato) Questa condizione è rilevabile tramite il comando...

netstat -a

... già descritto in precedenza. Da tale comando si dovrebbe identificare la presenza di un socket in condizione di chiusura. Essa può essere rappresentata da uno stato di CLOSE_WAIT o di TIME_WAIT.

Windows Only:
La consultazione dell'Event Viewer dovrebbe dare evidenza dell'impossibilità di attivare il nuovo server a causa della porta già in uso. In generale questo strumento consente di identificare anche tutte le problematiche di attivazione dei server HighWay /eXtraWay che non venissero indicate nei files di log (sui quali si riesce ad intervernire solo dopo aver svolto le principali fasi di attivazione del programma).
Autore:
Tirabassi Roberto
Date
2007/03/01 08:53:43

Torna a Indice delle voci


HighWay/eXtraWay Project - Frequently Asked Questions (Doxygen 1.6.1)