SfondoRintracciare connessione al database emette
Abbiamo un certo numero di applicazioni web su diversi server web che si collegano a un singolo server di database. Negli ultimi due mesi, abbiamo notato che ogni tanto i nostri server web non sono in grado di connettersi al server del database.
nostro ambiente
Abbiamo un paio diversi ambienti web, un po 'di ColdFusion in esecuzione e altri che eseguono .NET. Le app .NET sono sia Web Form che MVC. Si estendono su più versioni da 2.0 a 4.5. Entrambi i server Web ColdFusion e .NET sono macchine basate su Windows. Sia gli ambienti Web ColdFusion che .NET sono raggruppati in cluster e alcune macchine sono fisiche mentre altre sono virtuali.
Il nostro server di database è SQL Server 2008 r2. Ospita più database. Ogni applicazione ha il proprio utente di database che si connette al server che gli fornisce solo l'accesso a un determinato database.
Altri fatti
- quando notiamo problemi, si verificano in brevi sequenze che durano ovunque da un paio di secondi per un paio di minuti.
- Quando notiamo dei problemi, il burst contiene errori da più applicazioni diverse, non solo una app alla volta.
- Quando riscontriamo problemi, il burst contiene errori da applicazioni provenienti da diversi ambienti web. (Questo ci fa pensare che possiamo escludere che le app stesse siano il problema)
- Lo scoppio di problemi di connessione si verificano in varie ore durante il giorno e la notte. Non sono sempre nei periodi di elevato utilizzo.
- Abbiamo monitorato cose come il numero di connessioni utente, memoria, IO, utilizzo della CPU, ecc ... e non abbiamo visto picchi o qualsiasi altra cosa che potrebbe indicare un problema.
- Abbiamo installato wireshark sul web e server db nella speranza di cogliere il problema senza successo.
Domande
- Qualcuno ha suggerimenti su dove devo cercare il prossimo?
- Esistono proprietà del database che potrebbero causare questo?
- C'è un modo per "monitorare" la connessione tra il database e il server web in un modo migliore?
- C'è qualcosa che può essere fatto sul lato app per capire meglio cosa sta succedendo?
errori catturati dalle applicazioni
- errori NET
- Una rete correlati o si è verificato l'errore specifico esempio mentre stabilisce una connessione a SQL Server. Il server non è stato trovato o non era accessibile.Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire le connessioni remote. (provider: Named Pipes Provider, errore: 40 - Impossibile aprire una connessione a SQL Server)
- Timeout scaduto. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde.
- Si è verificato un errore a livello di trasporto durante la ricezione dei risultati dal server. (provider: Provider TCP, errore: 0 - Il periodo di timeout del semaforo è scaduto.)
- Timeout scaduto. Il periodo di timeout è trascorso prima di ottenere una connessione dal pool. Ciò potrebbe essere dovuto al fatto che tutte le connessioni in pool erano in uso e che è stata raggiunta la dimensione massima del pool.
- errori ColdFusion
- Errore durante l'esecuzione di query di database. La connessione TCP/IP all'host non è riuscita. java.net.ConnectException: Timeout della connessione: connessione
L'errore si è verificato sulla riga 38. - Errore durante l'esecuzione della query del database. Connessione ripristinata dal peer: errore di scrittura socket
L'errore si è verificato sulla riga 91. - Errore durante l'esecuzione della query del database. Timeout cercando di stabilire il collegamento
L'errore si è verificato sulla linea 38.
- Errore durante l'esecuzione di query di database. La connessione TCP/IP all'host non è riuscita. java.net.ConnectException: Timeout della connessione: connessione
Sembra più un problema di connettività di rete che un problema di database. –
Questo sembra davvero un problema di rete con la scheda NIC, switch, router, cavo, ecc. –
Quale sarebbe il modo migliore per * sapere * di sicuro o per rintracciarlo? – Jason