问题:Appium在ios真机跑一段时间出现ios设备重启、appium自动挂掉

appium-ios真机测试

问题描述

问题一: 磁盘空间不足

第一次跑12小时,只跑到1小时多就磁盘已满,电脑崩溃了。

问题二:内存溢出

第二次清理了磁盘后,继续重跑,内存溢出,appium自动挂掉,问题未解决。

问题三:ios设备重启(使用Appium Desktop速度很慢,建议使用appium server)

第三次用appium desktop重跑,ios设备跑同一条的时间不断增长达到一定数量后就自动重启ios设备导致后面全挂。

    使用appium server,重启的问题解决了

第四次改用appium server重跑,ios设备仍然会遇到内存溢出,appium自动挂掉

回归到问题二:内存溢出

第五次,升级了appium server,并使用下面的方法启动appium:node --max-old-space-size=4096 main.js,问题解决了

内存溢出的错误信息如下:

<--- Last few GCs --->

[38241:0x103001800]  9917462 ms: Mark-sweep 117.9 (163.8) -> 117.8 (130.8) MB, 72.9 / 0.0 ms  (average mu = 0.941, current mu = 0.000) last resort GC in old space requested
[38241:0x103001800]  9917531 ms: Mark-sweep 117.8 (130.8) -> 117.8 (130.8) MB, 68.6 / 0.0 ms  (average mu = 0.901, current mu = 0.000) last resort GC in old space requested
<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0xc3a85f46381]
Security context: 0x1bee5f81e589
    1: toString [0x1bee3588a9b9] [buffer.js:~642] [pc=0xc3a888d3cb2](this=0x1bee9e907c51 ,encoding=0x1beec0b022e1 ,start=0x1beec0b022e1 ,end=0x1beec0b022e1 )
    2: arguments adaptor frame: 0->3
    3: InternalFrame [pc: 0xc3a85b90a15]
    4: EntryFrame [pc: 0xc3a85b8a1c1]
    5: ExitFrame [pc:...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [/usr/local/bin/node]
 2: node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: v8::internal::Heap::AllocateRawWithRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 6: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
 7: v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector, v8::internal::PretenureFlag) [/usr/local/bin/node]
 8: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) [/usr/local/bin/node]
 9: node::StringBytes::Encode(v8::Isolate*, char const*, unsigned long, node::encoding, v8::Local*) [/usr/local/bin/node]
10: void node::Buffer::(anonymous namespace)::StringSlice<(node::encoding)1>(v8::FunctionCallbackInfo const&) [/usr/local/bin/node]
11: 0xc3a85f46381
12: 0xc3a888d3cb2
Abort trap: 6

解决办法:

1. 到appium server所在的启动路径,用命令:which appium可以查到路径:
$ which appium
/usr/local/n/versions/node/10.4.0/bin/appium
上面的文件里的appium是个快捷方式,查找路径的步骤:
* finder右击-‘前往文件夹’打开目录/usr/local/n/versions/node/10.4.0/bin
* 找到appium文件,右击选择‘显示原身’,会跳转到appium所在的路径
* 右击上一步跳转到的文件,选择‘显示简介’
* 复制位置:/usr/local/n/versions/node/10.4.0/lib/node_modules/appium/build/lib
问题:Appium在ios真机跑一段时间出现ios设备重启、appium自动挂掉_第1张图片

2. 采用以下命令启动appium:将appium内存扩展到4096MB

    $ cd /usr/local/n/versions/node/10.4.0/lib/node_modules/appium/build/lib
    $ node --max-old-space-size=4096 main.js

注意:此问题并未得到实质性的解决,如果磁盘空间不够大,跑很长时间后会发现系统的空余磁盘空间不断缩小,闪存不断增大,直到系统撑不住。重启Mac后,系统磁盘空间会恢复到原来的大小。

参考文章:
    监控内存:如何查node js里的内存泄漏https://blog.risingstack.com/finding-a-memory-leak-in-node-js/

你可能感兴趣的:(Appium)