使用React Native应用(仅测试使用
该应用使用React Native构建,并使用
我们能够获得遇到问题的设备并通过Xcode运行它。以下是在Xcode中捕获的错误堆栈的子集:
查询到这个[ELB] -> [Nginx容器] -> [服务容器]的设置有时可以工作,但会停止。它几乎表明了一个保持活动状态的情况,就像这个问题。我们将ELB空闲超时设置为默认值(60秒),并将其增加到300秒,但没有明显效果。我们尝试使用Nginx的keep-alive,将其设置为360秒和0秒(完全禁用)。
对于这个域名,我们在Kubernetes集群中托管了各种服务,例如Java和Node.js。该问题对所有服务都有影响。
没有任何Android应用用户报告过这个问题。
遇到此问题的设备始终如一,而非间歇性发生。
由于错误类型,请求从未到达我们的Nginx日志中。
create-react-app
生成的应用),一些iPhone用户在使用蜂窝数据连接时几乎无法向我们的API发起网络请求。出现问题的域名指向Amazon弹性负载均衡器(第7层,SSL终止),该负载均衡器指向位于EKS Kubernetes集群内的Nginx反向代理。应用调用的其他API(例如Mapbox)在使用蜂窝数据连接时都能正常工作,包括我们托管在专用服务器上的一个API。唯一无法正常工作的是我们的ELB域上的请求。当用户切换到WiFi后,我们的应用程序可以对该域进行网络请求。这已经在运行iOS 12.3.1的iPhone 7、iPhone 8和iPhone X上观察到。其中一台设备为Verizon,另外5台报告的设备为AT&T。每个API调用都是HTTPS。删除并重新安装应用程序以及重启设备均无法解决该问题。在所有情况下,我们都确认应用在设置 > 蜂窝移动网络 > [应用名称]
和设置 > [应用名称] > 使用蜂窝数据
中启用了蜂窝数据。该应用使用React Native构建,并使用
cross-fetch
库执行网络请求。我们能够获得遇到问题的设备并通过Xcode运行它。以下是在Xcode中捕获的错误堆栈的子集:
nw_connection_copy_connected_local_endpoint [C12] Connection has no local endpoint
2019-06-27 11:26:16.841347-0400 myapp[23700:1527268] [BoringSSL]
nw_protocol_boringssl_get_output_frames(1301) [C10.1:2][0x117d5a050] get output frames failed, state 8196
2019-06-27 11:26:22.465855-0400 myapp[23700:1527305] [BoringSSL] nw_protocol_boringssl_error(1584) [C20.1:2][0x119b0e420] Lower protocol stack error: 54
2019-06-27 11:26:22.466665-0400 myapp[23700:1527305] TIC TCP Conn Failed [20:0x280022400]: 1:54 Err(54)
2019-06-27 11:26:23.040101-0400 myapp[23700:1527399] Task <DD5FDD4A-1BE0-41ED-AAC4-9EB07F61F109>.<7> HTTP load failed (error code: -1005 [1:54])
2019-06-27 11:26:23.040408-0400 myapp[23700:1527305] Task <DD5FDD4A-1BE0-41ED-AAC4-9EB07F61F109>.<7> finished with error - code: -1005
load failed with error Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={_kCFStreamErrorCodeKey=54, NSUnderlyingError=0x283a521f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x28161ab70 [0x1e9e5d420]>{length = 16, capacity = 16, bytes = 0x100201bb3416ca8a0000000000000000}, _kCFStreamErrorCodeKey=54, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <DD5FDD4A-1BE0-41ED-AAC4-9EB07F61F109>.<7>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <DD5FDD4A-1BE0-41ED-AAC4-9EB07F61F109>.<7>"
), NSLocalizedDescription=The network connection was lost.
查询到这个[ELB] -> [Nginx容器] -> [服务容器]的设置有时可以工作,但会停止。它几乎表明了一个保持活动状态的情况,就像这个问题。我们将ELB空闲超时设置为默认值(60秒),并将其增加到300秒,但没有明显效果。我们尝试使用Nginx的keep-alive,将其设置为360秒和0秒(完全禁用)。
对于这个域名,我们在Kubernetes集群中托管了各种服务,例如Java和Node.js。该问题对所有服务都有影响。
没有任何Android应用用户报告过这个问题。
遇到此问题的设备始终如一,而非间歇性发生。
由于错误类型,请求从未到达我们的Nginx日志中。