2009-04-01 21 views
12

Ho ereditato un'applicazione (interna alla mia azienda) che utilizza javascript in esecuzione in Internet Explorer che effettua chiamate Ajax a un'applicazione basata su Struts in esecuzione in WebLogic Server v10.Cosa solleva HTTP 503 e come modificare il timeout?

Alcune operazioni sul lato server nel sistema richiedono più di 3 minuti. Gli utenti hanno notato che la chiamata Ajax restituisce l'errore 503 al segno dei 3 minuti. I miei utenti possono attendere più di 3 minuti, ma 503 errori interrompono il loro lavoro.

Questa applicazione deve essere ottimizzata per le prestazioni, ma è necessario disporre di una soluzione temporanea per estendere quanto tempo può trascorrere prima che venga restituito un errore 503.

La teoria corrente è che l'errore 503 viene generato dall'oggetto XMLHttpRequest di IE. Un team di supposti esperti di WebLogic ha riversato il nostro codice e i log di WebLogic e ha dichiarato che non si verificava alcun timeout sul lato server. Ma ho i miei dubbi.

La mia domanda è, quale software è responsabile per l'errore 503: il browser, il javascript Ajax o il server? E questo periodo di timeout può essere cambiato?

+0

In seguito a questa vecchia domanda ... nel mio caso, questo è stato causato da un codice server mal sintonizzato che impiega troppo tempo a rispondere. Ottenere la risposta a meno di 30 secondi (almeno) ha fatto sparire questo sintomo. Ancora non sono sicuro quale software stava sollevando il 503 e/o come modificare il timeout, quindi suppongo che lascerò questa domanda aperta. –

+0

La formulazione di questa domanda era perfetta! Grazie molto per una bella domanda. Questi sono il tipo di domande di cui SO ha bisogno – thedouglenz

risposta

2

Il server Web ha una richiesta di timeout di risposta che viene attivata da richieste di assistenza di lunga durata. Potrebbe essere il server WebLogic o un proxy. Non è certamente il cliente.

Avete considerato di inviare una richiesta HTTP asincrona a cui verrà risposto immediatamente e quindi eseguire il polling di un'altra posizione per i risultati finali? Tre minuti sono lunghi circa 170 secondi.

4

Un errore 503 è un tipo di catch-all per molti tipi diversi di errori, solitamente sul lato server. Nel tuo caso potrebbe essere che il server stia semplicemente rifiutando la connessione dopo un certo timeout e rispondi con un 503 per indicare che il server è sovraccarico o non può elaborare la tua richiesta.

Un sacco di volte con i servizi Web, un 503 verrà restituito quando il codice server genera un'eccezione o un errore. Se il codice del server non gestisce correttamente l'errore, lo farà bolla fino al server, che sarà solo rispondere di nuovo con un generico 503.

http://www.checkupdown.com/status/E503.html

Error code 5xx (alternate definition)

RFC 2616

3

503 è un errore del server. XMLHttpRequest aspetterà felicemente più di 3 minuti. La prima cosa che dovresti fare è soddisfarti visitando l'URL problema in telnet o netcat o simili e vedendo il 503 con javascript fuori dall'immagine.

Quindi è possibile procedere alla ricerca del timeout sul lato server.

1

503 è probabilmente dovuto a un timeout sul server. Se è possibile ottimizzare il server Apache, leggere l'attributo Timeout che è possibile impostare in httpd.conf. Cerca in httpd/logs/error_log per vedere se si verificano timeout. Fare riferimento anche a questa risposta: Mod cluster proxy timeout in apache error logs.

Problemi correlati