AWS의 웹 서비스에서 많은 콘텐츠를 다운로드하는 복잡한 앱이 있습니다. 그러나, 나는 계속 SocketTimeoutException
의 50 %를 얻고있다. 나는 100 초로 증가하지만, 여전히이 오류가 점점 계속 :SocketTimeoutException Android
- 타임 연결 시간 초과가 작 : 내 연구를 바탕으로, 나는 이유가 다음 될 수 있다고 생각한다.
- 메모리 누수 : 계속해서
GC
경고를 받고 있습니다. 기사를 읽고 코드 개선을 시도했지만 도움이되지 않습니다. 또한 내 응용 프로그램이 백그라운드 스레드에서 다른 파일을 차례로 다운로드하여 2000+ 30KB JSON 파일을 다운로드한다고 언급해야합니다. 이것을 효율적으로 즉흥적으로 제안하는 것이 매우 환영받을 것입니다! - 서버 문제 : Amazon Web Service는 신뢰성이 높기 때문에 근본적인 문제가 아닐 수도 있습니다.
- 다중 스레드 : 어떻게 든 책임을 질 수 있습니까?
- 잘못된 다운로드 방법 : 나는 비효율적 인 방식으로 다운로드 할 것인지 의심 스럽습니다. 틀 렸으면 고쳐줘.
실제 문제를 파악하는 데 도움주세요. 감사 !
public synchronized String getJSONString(String url)
{
try {
URL url1 = new URL(url);
URLConnection tc = url1.openConnection();
tc.setConnectTimeout(timeout);
tc.setReadTimeout(timeout);
// tc.connect();
br = new BufferedReader((new InputStreamReader(tc.getInputStream())),8000);
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
json = sb.toString();
return json;
}
catch(Exception e)
{
Log.e("JSON Downloader", "Error downloading feed/article ");
e.printStackTrace();
}
return null;
}
오류 로그 :
02-01 06:37:43.375: W/System.err(5548): java.net.SocketTimeoutException
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
02-01 06:37:43.375: W/System.err(5548): at java.io.InputStream.read(InputStream.java:163)
02-01 06:37:43.375: W/System.err(5548): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
02-01 06:37:43.375: W/System.err(5548): at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
02-01 06:37:43.375: W/System.err(5548): at libcore.io.Streams.readAsciiLine(Streams.java:201)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
02-01 06:37:43.375: W/System.err(5548): at com.in.feeds.JSONDownloader.getJSONString(JSONDownloader.java:65)
02-01 06:37:43.375: W/System.err(5548): at com.in.feeds.JSONDownloader.getJSONObjectFromUrl(JSONDownloader.java:45)
02-01 06:37:43.375: W/System.err(5548): at com.in.fullarticle.ArticlePage$LoadArticle.run(ArticlePage.java:383)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-01 06:37:43.375: W/System.err(5548): at java.lang.Thread.run(Thread.java:856)