2015-08-13 16 views
10

Uso la funzione Wildfly 8.2 e si attiva una serie di richieste DB quando viene aperta una determinata pagina Web. Tutte le query vengono invocate tramite l'API dei criteri JPA, restituiscono i risultati come previsto e nessuno di essi fornisce un avviso, un errore o un'eccezione. Funziona tutto in parallelo Plesk.Impossibile riempire il pool (spazio buffer non disponibile)

Ora, ho notato che entro 2 o 3 giorni viene visualizzato il seguente errore e il sito non risponde. Riavvio e attendo circa altri 3 giorni finché non si ripresenta (a seconda del numero di richieste che ho). enter image description here

Ho controllato il tcpsndbuf sul mio server linux e ho notato che è costantemente al massimo. A meno che non riavvii Wildfly. Apparentemente non riesce a rilasciare le connessioni. enter image description here

Le connessioni sono gestite da JPA/Hibernate e dal contenitore Wildfly. Ad esempio, non eseguo alcuna gestione delle transazioni speciale o personalizzata, ad es. aperto chiuso. ecc. Lascio tutto a Wildfly.

Il driver MySQL che sto utilizzando è 5.1.21 (mysql-connector-java-5.1.21-bin.jar)

Nel standalone.xml ho definito i seguenti valori origine dati origine dati (tra gli altri):

<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
<pool> 
    <min-pool-size>3</min-pool-size> 
    <max-pool-size>10</max-pool-size> 
</pool> 
<statement> 
    <prepared-statement-cache-size>32</prepared-statement-cache-size> 
    <shared-prepared-statements>true</shared-prepared-statements> 
</statement 

Qualcuno ha riscontrato lo stesso aumento di valori tcpsndbuf (o questo errore)? Se hai bisogno di più config o file di registro, fammi sapere. Grazie!


UPDATE Nonostante le seguenti impostazioni di timeout aggiuntive, si corre ancora nel gancio. Quindi, utilizzerà il tempo di CPU al 100%, ogni volta che viene raggiunto il valore massimo di tcpsndbuf. enter image description here, enter image description here

risposta

5

Prova ad aggiungere questa proprietà Hibernate:

<property name="hibernate.connection.release_mode">after_transaction</property> 

Per impostazione predefinita, JTA mandates that connection should be released after each statement, che è indesiderabile per la maggior parte dei casi d'uso. La maggior parte dei driver non consente comunque il multiplexing di una connessione su più transazioni XA.

+0

No. Non ha aiutato. Cresce con gli stessi modi. Ho anche sostituito il driver mysql - senza successo. – feder

3

Utilizzi openvz? Penso che questa domanda dovrebbe essere posta su serverfault. È correlato alla configurazione di Linux. È possibile leggere: tcpsndbuf. È necessario contare le prese aperte e verificare le condizioni: UBC consistency check

+0

No. Ho usato Paralles Power Panel. Niente ha aiutato. Non ha funzionato l'aggiornamento del driver release_mode né mysql. – feder

+0

Parallels Power Panel è uno strumento basato sul web per i contenitori di gestione openvz – sibnick

Problemi correlati