Re: [Grinder-development] tower - missing translation
Darren Ball <[email protected]> Tue, 21 Apr 2015 18:09:51 -0400
| Newsgroups | gmane.comp.java.grinder.user |
|---|---|
| Message-ID | <CA+YPNhemfFQO5yPS2F9tEbE3jeZvkO2e6Lo3xvkUUoj70gakSg@mail.gmail.com> |
Hi Philip, Yes it is not representative of the sampling period that I would like. I am resorting to a cron job that collects the stats at a prescribed interval that uses the tests count delta between each interval for reporting. We are attempting to see this over long running periods. Thanks for clarifying. -Darren On Tue, Apr 21, 2015 at 4:11 PM, Philip Aston <[email protected]> wrote: > cc'ing grinder-use for the record. > > There's no simple way to calculate TPS from response time. I'm guessing > that you think the TPS is too low, given the peak values? > > The TPS reported in the summary is calculated over the duration of the > recording period. You can see this more clearly when controlling the > recording with the Swing console. I suspect the problem is that you are not > stopping the recording with the load, so all of the TPS values will just > decline. See > http://grinder.sourceforge.net/g3/console-service.html#Obtaining+the+results > > - Phil > > > On 21/04/15 20:09, Darren Ball wrote: > > Hi Philip, > > Looks like this did solve the issue. > Outside of this, there seems to be one other issue in the statistical > calculations IMO. > > I have the following recorded data (below). Given the mean time for the > tests in MS, and looking at the TPS, the calculation does not seem correct. > My tests are throttling my application with hundreds of calls a sec, but > the TPS reflects something that seems inaccurate? The Peak TPS seems off > as well. I am looking at per test statistics. > > Am I incorrect in my view of how these are supposed to work? > > > > { > "status": { > "sample-count": 13999, > "state": "Recording", > "description": "Collecting samples: 13999" > }, > "columns": [ > "Tests", > "Errors", > "Mean Test Time (ms)", > "Test Time Standard Deviation (ms)", > "TPS", > "Peak TPS" > ], > "tests": [ > { > "test": 1, > "description": "ListCSCApp", > "statistics": [ > 1811, > 0, > 16.932633903920486, > 18.30901962211711, > 0.11540469098721226, > 74 > ] > }, > { > "test": 2, > "description": "GetCSCApp", > "statistics": [ > 1810, > 0, > 24.992265193370166, > 11.041105810598534, > 0.11534096669621986, > 74 > ] > }, > { > "test": 3, > "description": "ListCSCAppTables", > "statistics": [ > 1811, > 0, > 25.128658199889564, > 10.923634896825913, > 0.11540469098721226, > 74 > ] > } > ], > "totals": [ > 5432, > 0, > 22.350699558173783, > 14.382227755468788, > 0.34615034867064437, > 222 > ] > } > > On Tue, Apr 21, 2015 at 12:52 PM, Philip Aston <[email protected]> wrote: > >> OK, good to hear. >> >> - Phil >> >> >> On 20/04/15 20:26, Darren Ball wrote: >> >> Looks like it might have solved it. FYI. Running an extended series to >> see. >> Thanks for the fix. >> >> On Mon, Apr 20, 2015 at 3:05 PM, Darren Ball <[email protected]> >> wrote: >> >>> Hi Philip, >>> I think this is also a problem (below). It seems that locale is set to >>> nothing in this case and this is causing a translation in tower to throw an >>> exception. >>> It only happens when the agents are connecting for statistical >>> reporting? Rebuilding to see if your changes fix this, but I think this is >>> slightly different. >>> >>> -Darren >>> >>> Stack trace: >>> 2015-04-18 03:12:04,104 INFO console: The Grinder 3.12-SNAPSHOT >>> 2015-04-18 03:12:08,092 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 0 >>> 2015-04-18 03:12:08,105 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 0 >>> 2015-04-18 03:12:08,288 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 0 >>> 2015-04-18 03:12:08,290 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 0 >>> 2015-04-18 03:12:08,313 DEBUG >>> net.grinder.console.service.bootstrap_impl: Starting HTTP server at >>> 0.0.0.0:6373 >>> 2015-04-18 03:12:23,532 DEBUG net.grinder.console.service.app: request >>> :put /properties -> 200 (53.28 ms) >>> 2015-04-18 03:12:29,923 INFO console: Agent i-70cc4286 [Connected] >>> 2015-04-18 03:12:30,007 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 1 >>> 2015-04-18 03:12:30,010 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 1 >>> 2015-04-18 03:12:30,986 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 2 >>> 2015-04-18 03:12:30,988 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 2 >>> 2015-04-18 03:12:37,953 DEBUG net.grinder.console.service.app: request >>> :post /files/distribute -> 200 (10.33 ms) >>> 2015-04-18 03:12:38,974 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 3 >>> 2015-04-18 03:12:38,975 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 3 >>> 2015-04-18 03:12:51,746 DEBUG net.grinder.console.service.app: request >>> :post /agents/start-workers -> 200 (21.76 ms) >>> 2015-04-18 03:13:01,427 INFO console: Agent i-70cc4286 [Connected] { >>> Worker i-70cc4286-0 [Ready] } >>> 2015-04-18 03:13:01,502 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 4 >>> 2015-04-18 03:13:01,503 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 4 >>> 2015-04-18 03:13:03,926 INFO console: Agent i-70cc4286 [Connected] >>> 2015-04-18 03:13:04,002 DEBUG net.grinder.console.web.livedata: (push >>> :process-state) 5 >>> 2015-04-18 03:13:04,003 DEBUG net.grinder.console.web.livedata: (push >>> :threads) 5 >>> 2015-04-18 03:13:12,606 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 1 >>> 2015-04-18 03:13:12,608 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 1 >>> 2015-04-18 03:13:12,945 INFO console: Agent i-70cc4286 [Connected] { >>> Worker i-70cc4286-0 [Running (1/1 thread)] } >>> 2015-04-18 03:13:12,983 INFO console: Collecting samples: 1 >>> Exception in thread "Timer-0" java.lang.Exception: Invalid locale: >>> at taoensso.tower$fn__1103.invoke(tower.clj:38) >>> at clojure.lang.AFn.applyToHelper(AFn.java:161) >>> at clojure.lang.AFn.applyTo(AFn.java:151) >>> at clojure.core$apply.invoke(core.clj:617) >>> at clojure.core$memoize$fn__5049.doInvoke(core.clj:5735) >>> at clojure.lang.RestFn.invoke(RestFn.java:408) >>> at taoensso.tower$fmt_msg.doInvoke(tower.clj:177) >>> at clojure.lang.RestFn.applyTo(RestFn.java:142) >>> at clojure.core$apply.invoke(core.clj:619) >>> at taoensso.tower$format_msg.doInvoke(tower.clj:542) >>> at clojure.lang.RestFn.applyTo(RestFn.java:137) >>> at clojure.core$apply.invoke(core.clj:619) >>> at net.grinder.translation.translate$t.doInvoke(translate.clj:52) >>> at clojure.lang.RestFn.invoke(RestFn.java:439) >>> at net.grinder.console.service.web$eval4444$fn__4445.invoke(web.clj:69) >>> at clojure.lang.MultiFn.invoke(MultiFn.java:231) >>> at >>> net.grinder.console.service.web$render_process_table$iter__4482__4486$fn__4487$iter__4504__4508$fn__4509.invoke(web.clj:109) >>> at clojure.lang.LazySeq.sval(LazySeq.java:42) >>> at clojure.lang.LazySeq.seq(LazySeq.java:60) >>> at clojure.lang.RT.seq(RT.java:484) >>> at clojure.core$seq.invoke(core.clj:133) >>> at clojure.core$apply.invoke(core.clj:617) >>> at >>> net.grinder.console.service.web$render_process_table$iter__4482__4486$fn__4487.invoke(web.clj:105) >>> at clojure.lang.LazySeq.sval(LazySeq.java:42) >>> at clojure.lang.LazySeq.seq(LazySeq.java:60) >>> at clojure.lang.RT.seq(RT.java:484) >>> at clojure.core$seq.invoke(core.clj:133) >>> at clojure.core$apply.invoke(core.clj:617) >>> at >>> net.grinder.console.service.web$render_process_table.invoke(web.clj:90) >>> at >>> net.grinder.console.service.web$create_app$push_process_data__4912.invoke(web.clj:352) >>> at >>> net.grinder.console.model.processes$add_listener$fn__2111.invoke(processes.clj:116) >>> at clojure.lang.ARef.notifyWatches(ARef.java:98) >>> at clojure.lang.Atom.reset(Atom.java:101) >>> at clojure.core$reset_BANG_.invoke(core.clj:2178) >>> at >>> net.grinder.console.model.processes$initialise$reify__2016.update(processes.clj:48) >>> at >>> net.grinder.console.communication.ProcessStatusImplementation$3.inform(ProcessStatusImplementation.java:157) >>> at >>> net.grinder.console.communication.ProcessStatusImplementation$3.inform(ProcessStatusImplementation.java:155) >>> at net.grinder.util.ListenerSupport.apply(ListenerSupport.java:104) >>> at >>> net.grinder.console.communication.ProcessStatusImplementation.update(ProcessStatusImplementation.java:154) >>> at >>> net.grinder.console.communication.ProcessStatusImplementation.access$000(ProcessStatusImplementation.java:51) >>> at >>> net.grinder.console.communication.ProcessStatusImplementation$1.run(ProcessStatusImplementation.java:103) >>> at java.util.TimerThread.mainLoop(Timer.java:555) >>> at java.util.TimerThread.run(Timer.java:505) >>> 2015-04-18 03:13:13,107 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 2 >>> 2015-04-18 03:13:13,108 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 2 >>> ^C2015-04-18 03:13:41,966 INFO console: missing translation: {0} >>> >>> >>> There are other times this works for a period and then croaks, as in >>> this, where it does not happen until 90+ samples in. >>> >>> 2015-04-18 02:46:11,878 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 86 >>> 2015-04-18 02:46:11,879 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 86 >>> 2015-04-18 02:46:12,880 INFO console: Collecting samples: 86 >>> 2015-04-18 02:46:12,995 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 87 >>> 2015-04-18 02:46:12,996 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 87 >>> 2015-04-18 02:46:13,996 INFO console: Collecting samples: 87 >>> 2015-04-18 02:46:14,114 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 88 >>> 2015-04-18 02:46:14,116 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 88 >>> 2015-04-18 02:46:15,118 INFO console: Collecting samples: 88 >>> 2015-04-18 02:46:15,238 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 89 >>> 2015-04-18 02:46:15,239 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 89 >>> 2015-04-18 02:46:16,240 INFO console: Collecting samples: 89 >>> 2015-04-18 02:46:16,357 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 90 >>> 2015-04-18 02:46:16,358 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 90 >>> 2015-04-18 02:46:17,358 INFO console: Collecting samples: 90 >>> 2015-04-18 02:46:17,475 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 91 >>> 2015-04-18 02:46:17,476 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 91 >>> 2015-04-18 02:46:18,477 INFO console: Collecting samples: 91 >>> 2015-04-18 02:46:18,598 DEBUG net.grinder.console.web.livedata: (push >>> :statistics) 92 >>> 2015-04-18 02:46:18,599 DEBUG net.grinder.console.web.livedata: (push >>> :sample) 92 >>> 2015-04-18 02:46:18,638 INFO console: Agent i-70cc4286 [Connected] { >>> Worker i-70cc4286-1 [Running (1/1 thread)] } >>> Exception in thread "Timer-0" java.lang.Exception: Invalid locale: >>> at taoensso.tower$fn__1103.invoke(tower.clj:38) >>> at clojure.lang.AFn.applyToHelper(AFn.java:161) >>> at clojure.lang.AFn.applyTo(AFn.java:151) >>> at clojure.core$apply.invoke(core.clj:617) >>> at clojure.core$memoize$fn__5049.doInvoke(core.clj:5735) >>> at clojure.lang.RestFn.invoke(RestFn.java:408) >>> >>> >>> Environment (both nodes) >>> [grinder@grinderconsole ~]$ env | grep UTF >>> LC_ALL=en_US.UTF-8 >>> LANG=en_US.UTF-8 >>> LANGUAGE=en_US.UTF-8 >>> [grinder@grinderconsole ~]$ locale >>> LANG=en_US.UTF-8 >>> LC_CTYPE="en_US.UTF-8" >>> LC_NUMERIC="en_US.UTF-8" >>> LC_TIME="en_US.UTF-8" >>> LC_COLLATE="en_US.UTF-8" >>> LC_MONETARY="en_US.UTF-8" >>> LC_MESSAGES="en_US.UTF-8" >>> LC_PAPER="en_US.UTF-8" >>> LC_NAME="en_US.UTF-8" >>> LC_ADDRESS="en_US.UTF-8" >>> LC_TELEPHONE="en_US.UTF-8" >>> LC_MEASUREMENT="en_US.UTF-8" >>> LC_IDENTIFICATION="en_US.UTF-8" >>> LC_ALL=en_US.UTF-8 >>> >>> >>> [grinder@grinderagent1 ~]$ env | grep UTF >>> LC_ALL=en_US.UTF-8 >>> LANG=en_US.UTF-8 >>> LANGUAGE=en_US.UTF-8 >>> [grinder@grinderagent1 ~]$ locale >>> LANG=en_US.UTF-8 >>> LC_CTYPE="en_US.UTF-8" >>> LC_NUMERIC="en_US.UTF-8" >>> LC_TIME="en_US.UTF-8" >>> LC_COLLATE="en_US.UTF-8" >>> LC_MONETARY="en_US.UTF-8" >>> LC_MESSAGES="en_US.UTF-8" >>> LC_PAPER="en_US.UTF-8" >>> LC_NAME="en_US.UTF-8" >>> LC_ADDRESS="en_US.UTF-8" >>> LC_TELEPHONE="en_US.UTF-8" >>> LC_MEASUREMENT="en_US.UTF-8" >>> LC_IDENTIFICATION="en_US.UTF-8" >>> LC_ALL=en_US.UTF-8 >>> >>> >>> >>> On Mon, Apr 20, 2015 at 2:18 PM, Philip Aston <[email protected]> wrote: >>> >>>> Thanks for the report. >>>> >>>> I've pushed a fix - let me know whether this works. >>>> >>>> Building a SNAPSHOT from the tip of the source tree is always going to >>>> be adventurous. But I understand you are doing so to use the later version >>>> of Jython. >>>> >>>> - Phil >>>> >>>> >>>> On 20/04/15 16:15, Darren Ball wrote: >>>> >>>> I am getting this error, and after talking to the owner of Tower, he >>>> is suggesting that this is something broken in grinder: >>>> >>>> [grinder@ip-10-82-151-23 ~]$ ./console_headless_start2.sh >>>> >>>> 2015-04-20 14:46:26,607 INFO console: The Grinder 3.12-SNAPSHOT >>>> >>>> 2015-Apr-20 14:46:26 +0000 ip-10-82-151-23.localdomain DEBUG >>>> [taoensso.tower] - Missing translation {:locales [#<Locale en_US>], :scope >>>> nil, :ks [:console.term/finished], :dev-mode? true, :ns clojure.core} >>>> >>>> >>>> Anyone know why tower is reacting this way or how to fix this? >>>> >>>> Darren >>>> >>>> >> > > ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ grinder-use mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/grinder-use