Appium强制JavaScript堆内存不足

时间:2017-03-23 11:46:44

标签: java android testing appium

通过pagefactory + testng + maven运行自动测试 1)启动硒网格:

java -jar \selenium-server-standalone-2.53.0.jar -role hub

2)启动appium服务器:

appium -a 127.0.0.1 -p 4723 --bootstrap-port 4720 -U 3b06c2a2 --nodeconfig node_config_1.json

appium -a 127.0.0.1 -p 4725 --bootstrap-port 4729 -U LenovoTAB2A8 --nodeconfig node_config_2.json

3)开始测试:mvn test

appium版本:1.6.3 / 1.5.3 /1.4-检查所有版本。 节点版本:js node-v7.7.4-x64.msi java 1.8,Windows 7 x64

30分钟后,第二个appium(-p 4725)使用太多的RAM~1.3Gb,当第一个使用较少的RAM(-p 47253)~300Mb

过了一段时间,appium(-p 4725)d <

<--- Last few GCs --->

2558249 ms: Mark-sweep 1371.3 (1434.9) -> 1371.3 (1434.9) MB, 1745.2 / 0.0 ms [
allocation failure] [GC in old space requested].
2559995 ms: Mark-sweep 1371.3 (1434.9) -> 1372.8 (1408.9) MB, 1745.4 / 0.0 ms [
last resort gc].
2561685 ms: Mark-sweep 1372.8 (1408.9) -> 1374.8 (1408.9) MB, 1689.8 / 0.0 ms [
last resort gc].

<--- JS stacktrace --->

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

Security context: 000002B7252CFB61 
1: onread [net.js:530] [pc=000001837B14847C] (this=000000AC5570A169 <a Pipe
with map 0000008EE91F9D21>,nread=410,buffer=00000073E9AE60B9 <an Uint8Array with
map 0000008EE91F8671>)
2: arguments adaptor frame: 3->2

==== Details ================================================

[net.js:530] [pc=000001837B14847C] (this=000000AC5570A169 <a Pipe wi
th map 0000008EE91F9D21>,nread...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memo
ry

1 个答案:

答案 0 :(得分:0)

这绝对是一个问题:我不能代表较旧的服务器版本,但使用 1.7.1 单节点对我来说使用 115-180 Mb RAM并保持在时间内的水平。

从Appium服务器 1.6.5 开始,您可以使用--enable-heapdump服务器标志打开NodeJS内存转储集合。这可能有助于您调查问题是在您的基础架构设置中还是在appium服务器端。

您还可以查看Selenium Grid的一些替代方案,例如Selenoid