Ho ottenuto un'app che esegue alcune attività di rete in base all'attività dell'utente. Il carico utile abituale inviato dall'app è 100-200 byte quindi in pratica non ci sono compiti di sollevamento pesanti. Questi compiti di solito funzionano senza problemi (statisticamente il 99,9% o le richieste vanno bene), ma a parte queste attività di rete, la mia app invia anche l'heartbeat ai nostri server (che sono su Amazon EC2 (us-east1- d se ciò avrebbe importanza)). L'heartbeat viene inviato ogni 10 secondi come richiesta POST ordinaria su HTTPS - e questo è ciò che non funziona per me in quanto il tasso di errore è molto più alto di quello osservato nelle normali attività di rete - durante il mio recente test di 7 ore il 25% delle richieste di heartbeat non è riuscito (ma ho visto anche il 35% di gocce) e di solito si mantiene a quel ritmo. Quando disattivo SSL, il tasso di errore rimane sul mio dispositivo di test all'8% percento. Questo probabilmente non sarebbe davvero un grosso problema se questi errori rientrassero in qualsiasi modello (vale a dire ogni quarto ecc.) Che potrebbe significare un filtro basato sulla frequenza, o fallirebbe vicino a ogni ora o giorno che potrebbe significare che tipo di limite di richiesta è fissato da qualche parte). Ma non succede nulla del genere - a volte una richiesta di 10-15 può fallire in una riga, e questo è male per il battito cardiaco. Inoltre, per peggiorare la situazione, al momento vedo che le richieste non riescono a connettermi al server dallo stesso dispositivo e questo funziona senza problemi). Questo problema si verifica su qualsiasi versione supportata di Android (2.2+).Problemi di rintracciamento delle radici dei problemi di "stabilità" della rete
Io uso il recente httpclientandroidlib per fare le richieste HTTP, così ho iniziato a sospettare che lib fosse un colpevole quindi sono passato a Android Asynchronous HTTP Client ma non ha dato alcun cambiamento. Sto per lo più ottenendo eccezioni come:
NoHttpResponseException: The target server failed to respond The target server failed to respond URL: https://xx.xx.xx.xx/heartbeat/
e per le connessioni SSL abilitati anche:
javax.net.ssl.SSLException: Read error: ssl=0x784bc588: I/O error during system call, Connection reset by peer Read error: ssl=0x784bc588: I/O error during system call, Connection reset by peer URL: https://xx.xx.xx.xx/heartbeat/
Io fondamentalmente vorrei rintracciare il colpevole prima, in modo da sapere che l'applicazione è in esecuzione su reti di telefonia mobile per lo più, Sono aperto a qualsiasi suggerimento su come procedere ulteriormente con questo problema come sono al momento bloccato un po '.
Hai controllato completamente le prestazioni del tuo server? –
"Connessione ripristinata dal peer" questo è probabilmente un problema del server. Per essere chiari, potresti forse rintracciarlo con WireShark. http://www.wireshark.org/ – Devrim
La tua nuova scelta di libreria presenta problemi interessanti: https://github.com/loopj/android-async-http/issues – flup