首页 > 解决方案 > 生产高峰期的 java.net.SocketTimeoutException

问题描述

我们在 Prodcution 上一直面临这个问题。现在,只要向所有移动应用程序和桌面应用程序推出通知,就会出现此问题。在通知中,有一张图片缓存在 CDN(Akamai) 中。所以很多用户都遇到了以下异常。我试图找出问题,但很多人说这可能是由于设备上的网络问题,但我的问题是 XXXX.XXXX.com 的 DNS 已解析为 akamai ip (117.239.141.27)。所以,这应该不是问题。此外,我与 Akamai 的人一起工作,他们最终找不到任何问题。所以,我有以下问题:

1)我如何找出导致问题的原因?其次,有没有人在高峰流量的生产中遇到过类似的问题?

2) 正如我从 crashlytics 获得的以下堆栈跟踪中所述。在少数情况下,我们会获得私有客户端 ip (192.168.1.33) 为什么会这样?不应将客户端的公共 ip 记录在 crashlytics 中。

Caused by java.net.SocketTimeoutException: failed to connect to XXXX.XXXX.com/117.239.141.27 (port 80) from /192.168.1.33 (port 50974) after 15000ms
       at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
       at libcore.io.IoBridge.connect(IoBridge.java:129)
       at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
       at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
       at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
       at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
       at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
       at java.net.Socket.connect(Socket.java:621)
       at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
       at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1416)
       at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1368)
       at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219)
       at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142)
       at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104)
       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392)
       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:488)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:434)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:565)
       at com.squareup.picasso.UrlConnectionDownloader.load(UrlConnectionDownloader.java:125)
       at com.squareup.picasso.NetworkRequestHandler.load$71fa0c91(NetworkRequestHandler.java:6)
       at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:72)
       at com.XXXXX.XXXXX.utils.AppNotificationHandler.getTabCategoryIdForScreen(AppNotificationHandler.java:82)
       at com.XXXXX.XXXXX.utils.AppNotificationHandler.handleExtras(AppNotificationHandler.java:806)
       at com.XXXXX.XXXXX.fcm.FCMIntentService.onMessageReceived(FCMIntentService.java:112)
       at com.google.firebase.messaging.FirebaseMessagingService.zzd(FirebaseMessagingService.java:394)
       at com.google.firebase.iid.zzg.run(zzg.java:26)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.android.gms.common.util.concurrent.zza.run(zza.java:7)
       at java.lang.Thread.run(Thread.java:764)

标签: javacrashlyticsconnection-timeoutakamaisocket-timeout-exception

解决方案


推荐阅读