【发布时间】:2016-08-31 12:47:47
【问题描述】:
我正在尝试运行使用 Gatling 工具中的 feed 方法的负载测试。目前,当我们使用一个大小约为 3.5GB 且有 600000 条记录的文件时,Gatling 会失败,但异常如下: 模拟 LoadTestSimulation 开始...
线程“主”java.lang.OutOfMemoryError 中的异常:超出 GC 开销限制 在 java.util.Arrays.copyOf(Arrays.java:2367) 在 java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130) 在 java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) 在 java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:535) 在 java.lang.StringBuffer.append(StringBuffer.java:322) 在 java.io.BufferedReader.readLine(BufferedReader.java:351) 在 java.io.BufferedReader.readLine(BufferedReader.java:382) 在 scala.io.BufferedSource$BufferedLineIterator.hasNext(BufferedSource.scala:72) 在 scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:369) 在 scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:369) 在 scala.collection.Iterator$class.foreach(Iterator.scala:742) 在 scala.collection.AbstractIterator.foreach(Iterator.scala:1194) 在 scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:59) 在 scala.collection.immutable.VectorBuilder.$plus$plus$eq(Vector.scala:732) 在 scala.collection.immutable.VectorBuilder.$plus$plus$eq(Vector.scala:708) 在 scala.collection.TraversableOnce$class.to(TraversableOnce.scala:308) 在 scala.collection.AbstractIterator.to(Iterator.scala:1194) 在 scala.collection.TraversableOnce$class.toVector(TraversableOnce.scala:304) 在 scala.collection.AbstractIterator.toVector(Iterator.scala:1194) 在 io.gatling.core.feeder.SeparatedValuesParser$$anonfun$parse$1.apply(SeparatedValuesParser.scala:34) 在 io.gatling.core.feeder.SeparatedValuesParser$$anonfun$parse$1.apply(SeparatedValuesParser.scala:33) 在 io.gatling.core.util.IO$.withSource(IO.scala:152) 在 io.gatling.core.feeder.SeparatedValuesParser$.parse(SeparatedValuesParser.scala:33) 在 io.gatling.core.feeder.FeederSupport$$anonfun$separatedValues$1.apply(FeederSupport.scala:38) 在 io.gatling.core.feeder.FeederSupport$$anonfun$separatedValues$1.apply(FeederSupport.scala:38) 在 io.gatling.core.feeder.FeederSupport$class.feederBuilder(FeederSupport.scala:46) 在 io.gatling.core.Predef$.feederBuilder(Predef.scala:32) 在 io.gatling.core.feeder.FeederSupport$class.separatedValues(FeederSupport.scala:38) 在 io.gatling.core.Predef$.separatedValues(Predef.scala:32) 在 io.gatling.core.feeder.FeederSupport$class.separatedValues(FeederSupport.scala:35) 在 io.gatling.core.Predef$.separatedValues(Predef.scala:32) 在 io.gatling.core.feeder.FeederSupport$class.tsv(FeederSupport.scala:32) :gatling 失败
我们正在使用使用这些参数的 gradle gatling 任务 - -PjvmArgs=-Dbroker=brokerhost:9092 -Dtopic= -Dusers=100 -Dduration_in_mins=2 -Dinput_file_name= -Psim="LoadTestSimulation"。
val scn = 场景(“演示”) .feed(tsv(inputFileName, true).circular) .exec(卡夫卡(“请求”) .sendString,String)
设置( scn.inject(constantUsersPerSec(users.toDouble) during (duration.toInt minutes)) //scn.inject(rampUsers(500) over (200 seconds)) .protocols(kafkaConf)) }
任何建议或提示,我们是否应该将文件拆分为多个文件并运行而不是传递这么大的文件, 这个文件会立即加载到内存中吗?
【问题讨论】:
标签: gatling