Re: Measuring SOLR performance
Hi Roman, Ok, I will. Thanks! Cheers, Dmitry On Tue, Sep 3, 2013 at 4:46 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, Thanks for the feedback. Yes, it is indeed jmeter issue (or rather, the issue of the plugin we use to generate charts). You may want to use the github for whatever comes next https://github.com/romanchyla/solrjmeter/issues Cheers, roman On Tue, Sep 3, 2013 at 7:54 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Thanks, the --additionalSolrParams was just what I wanted and works fine. BTW, if you have some special bug tracking forum for the tool, I'm happy to submit questions / bug reports there. Otherwise, this email list is ok (for me at least). One other thing I have noticed in the err logs was a series of messages of this sort upon generating the perf test report. Seems to be jmeter related (the err messages disappear, if extra lib dir is present under ext directory). java.lang.Throwable: Could not access /home/dmitry/projects/lab/solrjmeter7/solrjmeter/jmeter/lib/ext/lib at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) On Tue, Sep 3, 2013 at 2:50 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, If it is something you want to pass with every request (which is my use case), you can pass it as additional solr params, eg. python solrjmeter --additionalSolrParams=fq=other_field:bar+facet=true+facet.field=facet_field_name the string should be url encoded. If it is something that changes with every request, you should modify the jmeter test. If you open/load it with jmeter GUI, in the HTTP request processor you can define other additional fields to pass with the request. These values can come from the CSV file, you'll see an example how to use that when you open the test difinition file. Cheers, roman On Mon, Sep 2, 2013 at 3:12 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Erick, Agree, this is perfectly fine to mix them in solr. But my question is about solrjmeter input query format. Just couldn't find a suitable example on the solrjmeter's github. Dmitry On Mon, Sep 2, 2013 at 5:40 PM, Erick Erickson erickerick...@gmail.com wrote: filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via
Re: Measuring SOLR performance
Hi Roman, Thanks, the --additionalSolrParams was just what I wanted and works fine. BTW, if you have some special bug tracking forum for the tool, I'm happy to submit questions / bug reports there. Otherwise, this email list is ok (for me at least). One other thing I have noticed in the err logs was a series of messages of this sort upon generating the perf test report. Seems to be jmeter related (the err messages disappear, if extra lib dir is present under ext directory). java.lang.Throwable: Could not access /home/dmitry/projects/lab/solrjmeter7/solrjmeter/jmeter/lib/ext/lib at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) On Tue, Sep 3, 2013 at 2:50 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, If it is something you want to pass with every request (which is my use case), you can pass it as additional solr params, eg. python solrjmeter --additionalSolrParams=fq=other_field:bar+facet=true+facet.field=facet_field_name the string should be url encoded. If it is something that changes with every request, you should modify the jmeter test. If you open/load it with jmeter GUI, in the HTTP request processor you can define other additional fields to pass with the request. These values can come from the CSV file, you'll see an example how to use that when you open the test difinition file. Cheers, roman On Mon, Sep 2, 2013 at 3:12 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Erick, Agree, this is perfectly fine to mix them in solr. But my question is about solrjmeter input query format. Just couldn't find a suitable example on the solrjmeter's github. Dmitry On Mon, Sep 2, 2013 at 5:40 PM, Erick Erickson erickerick...@gmail.com wrote: filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278,
Re: Measuring SOLR performance
Hi Dmitry, Thanks for the feedback. Yes, it is indeed jmeter issue (or rather, the issue of the plugin we use to generate charts). You may want to use the github for whatever comes next https://github.com/romanchyla/solrjmeter/issues Cheers, roman On Tue, Sep 3, 2013 at 7:54 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Thanks, the --additionalSolrParams was just what I wanted and works fine. BTW, if you have some special bug tracking forum for the tool, I'm happy to submit questions / bug reports there. Otherwise, this email list is ok (for me at least). One other thing I have noticed in the err logs was a series of messages of this sort upon generating the perf test report. Seems to be jmeter related (the err messages disappear, if extra lib dir is present under ext directory). java.lang.Throwable: Could not access /home/dmitry/projects/lab/solrjmeter7/solrjmeter/jmeter/lib/ext/lib at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) at kg.apc.cmd.UniversalRunner.buildUpdatedClassPath(UniversalRunner.java:109) at kg.apc.cmd.UniversalRunner.clinit(UniversalRunner.java:55) On Tue, Sep 3, 2013 at 2:50 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, If it is something you want to pass with every request (which is my use case), you can pass it as additional solr params, eg. python solrjmeter --additionalSolrParams=fq=other_field:bar+facet=true+facet.field=facet_field_name the string should be url encoded. If it is something that changes with every request, you should modify the jmeter test. If you open/load it with jmeter GUI, in the HTTP request processor you can define other additional fields to pass with the request. These values can come from the CSV file, you'll see an example how to use that when you open the test difinition file. Cheers, roman On Mon, Sep 2, 2013 at 3:12 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Erick, Agree, this is perfectly fine to mix them in solr. But my question is about solrjmeter input query format. Just couldn't find a suitable example on the solrjmeter's github. Dmitry On Mon, Sep 2, 2013 at 5:40 PM, Erick Erickson erickerick...@gmail.com wrote: filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code]
Re: Measuring SOLR performance
Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.comwrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output
Re: Measuring SOLR performance
filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On
Re: Measuring SOLR performance
Hi Erick, Agree, this is perfectly fine to mix them in solr. But my question is about solrjmeter input query format. Just couldn't find a suitable example on the solrjmeter's github. Dmitry On Mon, Sep 2, 2013 at 5:40 PM, Erick Erickson erickerick...@gmail.comwrote: filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode
Re: Measuring SOLR performance
Hi Dmitry, If it is something you want to pass with every request (which is my use case), you can pass it as additional solr params, eg. python solrjmeter --additionalSolrParams=fq=other_field:bar+facet=true+facet.field=facet_field_name the string should be url encoded. If it is something that changes with every request, you should modify the jmeter test. If you open/load it with jmeter GUI, in the HTTP request processor you can define other additional fields to pass with the request. These values can come from the CSV file, you'll see an example how to use that when you open the test difinition file. Cheers, roman On Mon, Sep 2, 2013 at 3:12 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Erick, Agree, this is perfectly fine to mix them in solr. But my question is about solrjmeter input query format. Just couldn't find a suitable example on the solrjmeter's github. Dmitry On Mon, Sep 2, 2013 at 5:40 PM, Erick Erickson erickerick...@gmail.com wrote: filter and facet queries can be freely intermixed, it's not a problem. What problem are you seeing when you try this? Best, Erick On Mon, Sep 2, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What's the format for running the facet+filter queries? Would something like this work: field:foo =50 fq=other_field:bar facet=true facet.field=facet_field_name Thanks, Dmitry On Fri, Aug 23, 2013 at 2:34 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh
Re: Measuring SOLR performance
Hi Roman, With adminPath=/admin or adminPath=/admin/cores, no. Interestingly enough, though, I can access http://localhost:8983/solr/statements/admin/system But I can access http://localhost:8983/solr/admin/cores, only when with adminPath=/admin/cores (which suggests that this is the right value to be used for cores), and not with adminPath=/admin. Bottom line, these core configuration is not self-evident. Dmitry On Fri, Aug 23, 2013 at 4:18 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two
Re: Measuring SOLR performance
Hi Dmitry, So it seems solrjmeter should not assume the adminPath - and perhaps needs to be passed as an argument. When you set the adminPath, are you able to access localhost:8983/solr/statements/admin/cores ? roman On Wed, Aug 21, 2013 at 7:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading
Re: Measuring SOLR performance
Hi Roman, I have noticed a difference with different solr.xml config contents. It is probably legit, but thought to let you know (tests run on fresh checkout as of today). As mentioned before, I have two cores configured in solr.xml. If the file is: [code] solr persistent=false !-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler -- cores adminPath=/admin/cores host=${host:} hostPort=${jetty.port:8983} hostContext=${hostContext:solr} core name=metadata instanceDir=metadata / core name=statements instanceDir=statements / /cores /solr [/code] then the instruction: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 works just fine. If however the solr.xml has adminPath set to /admin solrjmeter produces an error: [error] **ERROR** File solrjmeter.py, line 1386, in module main(sys.argv) File solrjmeter.py, line 1278, in main check_prerequisities(options) File solrjmeter.py, line 375, in check_prerequisities error('Cannot find admin pages: %s, please report a bug' % apath) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot find admin pages: http://localhost:8983/solr/admin, please report a bug [/error] With both solr.xml configs the following url returns just fine: http://localhost:8983/solr/statements/admin/system?wt=json Regards, Dmitry On Wed, Aug 14, 2013 at 2:03 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.comwrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module
Re: Measuring SOLR performance
Hi Roman, This looks much better, thanks! The ordinary non-comarison mode works. I'll post here, if there are other findings. Thanks for quick turnarounds, Dmitry On Wed, Aug 14, 2013 at 1:32 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1381, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 562, in harvest_details_about_montysolr indexLstModified = cores_data['status'][cn]['index']['lastModified'], KeyError: 'lastModified' Thanks for letting me know, that info is probably not available in this situation - i've cooked st quick to fix it, please try the latest commit (hope it doesn't do more harm, i should get some sleep ..;)) roman In case it matters: Python 2.7.3, ubuntu, solr 4.3.1. Thanks, Dmitry On Thu, Aug 8, 2013 at 2:22 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to
Re: Measuring SOLR performance
Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1381, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 562, in harvest_details_about_montysolr indexLstModified = cores_data['status'][cn]['index']['lastModified'], KeyError: 'lastModified' Thanks for letting me know, that info is probably not available in this situation - i've cooked st quick to fix it, please try the latest commit (hope it doesn't do more harm, i should get some sleep ..;)) roman In case it matters: Python 2.7.3, ubuntu, solr 4.3.1. Thanks, Dmitry On Thu, Aug 8, 2013 at 2:22 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185, in check_options error(The folder '%s' does not exist % rf) File solrjmeter.py, line 66, in error traceback.print_stack() The folder '0' does not exist Dmitry On Wed, Aug 7, 2013 at 4:13 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Finally, this has worked!
Re: Measuring SOLR performance
Hi Dmitry, oh yes, late night fixes... :) The latest commit should make it work for you. Thanks! roman On Tue, Aug 13, 2013 at 3:37 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Something bad happened in fresh checkout: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R cms -t /solr/statements -e statements -U 100 Traceback (most recent call last): File solrjmeter.py, line 1392, in module main(sys.argv) File solrjmeter.py, line 1347, in main save_into_file('before-test.json', simplejson.dumps(before_test)) File /usr/lib/python2.7/dist-packages/simplejson/__init__.py, line 286, in dumps return _default_encoder.encode(obj) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 226, in encode chunks = self.iterencode(o, _one_shot=True) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 296, in iterencode return _iterencode(o, 0) File /usr/lib/python2.7/dist-packages/simplejson/encoder.py, line 202, in default raise TypeError(repr(o) + is not JSON serializable) TypeError: __main__.ForgivingValue object at 0x7fc6d4040fd0 is not JSON serializable Regards, D. On Tue, Aug 13, 2013 at 8:10 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1381, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 562, in harvest_details_about_montysolr indexLstModified = cores_data['status'][cn]['index']['lastModified'], KeyError: 'lastModified' Thanks for letting me know, that info is probably not available in this situation - i've cooked st quick to fix it, please try the latest commit (hope it doesn't do more harm, i should get some sleep ..;)) roman In case it matters: Python 2.7.3, ubuntu, solr 4.3.1. Thanks, Dmitry On Thu, Aug 8, 2013 at 2:22 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185,
Re: Measuring SOLR performance
Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1381, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 562, in harvest_details_about_montysolr indexLstModified = cores_data['status'][cn]['index']['lastModified'], KeyError: 'lastModified' In case it matters: Python 2.7.3, ubuntu, solr 4.3.1. Thanks, Dmitry On Thu, Aug 8, 2013 at 2:22 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185, in check_options error(The folder '%s' does not exist % rf) File solrjmeter.py, line 66, in error traceback.print_stack() The folder '0' does not exist Dmitry On Wed, Aug 7, 2013 at 4:13 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Finally, this has worked! Thanks for quick support. The graphs look awesome. At least on the index sample :) It is quite easy to setup and run + possible to run directly on the shard server in background mode. my test run was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R foo -t /solr/statements -e statements Thanks! Dmitry On Wed, Aug 7, 2013 at 6:54 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json
Re: Measuring SOLR performance
Hi Dmitry, On Mon, Aug 12, 2013 at 9:36 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Good point. I managed to run the command with -C and double quotes: python solrjmeter.py -a -C g1,cms -c hour -x ./jmx/SolrQueryTest.jmx As a result got several files (html, css, js, csv) in the running directory (any way to specify where the output should be stored in this case?) i know it is confusing, i plan to change it - but later, now it is too busy here... When I look onto the comparison dashboard, I see this: http://pbrd.co/17IRI0b two things: the tests probably took more than one hour to finish, so they are not aligned - try generating the comparison with '-c 14400' (ie. 4x3600 secs) the other thing: if you have only two datapoints, the dygraph will not show anything - there must be more datapoints/measurements One more thing: all the previous tests were run with softCommit disabled. After enabling it, the tests started to fail: $ python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R g1 -t /solr/statements -e statements -U 100 $ cd g1 Reading results of the previous test $ cd 2013.08.12.16.32.48 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ mkdir 2013.08.12.16.33.02 $ cd 2013.08.12.16.33.02 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter/g1 $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter $ cd /home/dmitry/projects/lab/solrjmeter4/solrjmeter Traceback (most recent call last): File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1381, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 562, in harvest_details_about_montysolr indexLstModified = cores_data['status'][cn]['index']['lastModified'], KeyError: 'lastModified' Thanks for letting me know, that info is probably not available in this situation - i've cooked st quick to fix it, please try the latest commit (hope it doesn't do more harm, i should get some sleep ..;)) roman In case it matters: Python 2.7.3, ubuntu, solr 4.3.1. Thanks, Dmitry On Thu, Aug 8, 2013 at 2:22 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185, in check_options error(The folder '%s' does not exist % rf) File solrjmeter.py, line 66, in error traceback.print_stack() The folder '0' does not exist Dmitry On Wed, Aug 7, 2013 at 4:13 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Finally, this has worked! Thanks for quick support. The graphs look awesome. At least on the index sample :) It is quite easy to setup and run + possible to run directly on the shard server in background mode. my test run was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R foo -t /solr/statements -e statements Thanks! Dmitry On Wed, Aug 7, 2013 at 6:54 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work:
Re: Measuring SOLR performance
Hi Roman, Finally, this has worked! Thanks for quick support. The graphs look awesome. At least on the index sample :) It is quite easy to setup and run + possible to run directly on the shard server in background mode. my test run was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R foo -t /solr/statements -e statements Thanks! Dmitry On Wed, Aug 7, 2013 at 6:54 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185, in check_options error(The folder '%s' does not exist % rf) File solrjmeter.py, line 66, in error traceback.print_stack() The folder '0' does not exist Dmitry On Wed, Aug 7, 2013 at 4:13 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Finally, this has worked! Thanks for quick support. The graphs look awesome. At least on the index sample :) It is quite easy to setup and run + possible to run directly on the shard server in background mode. my test run was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R foo -t /solr/statements -e statements Thanks! Dmitry On Wed, Aug 7, 2013 at 6:54 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi Dmitry, The command seems good. Are you sure your shell is not doing something funny with the params? You could try: python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a where g1 and foo are results of the individual runs, ie. something that was started and saved with '-R g1' and '-R foo' respectively so, for example, i have these comparisons inside '/var/lib/montysolr/different-java-settings/solrjmeter', so I am generating the comparison by: export SOLRJMETER_HOME=/var/lib/montysolr/different-java-settings/solrjmeter python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx -a roman On Wed, Aug 7, 2013 at 10:03 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, One more question. I tried to compare different runs (g1 vs cms) using the command below, but get an error. Should I attach some other param(s)? python solrjmeter.py -C g1,foo -c hour -x ./jmx/SolrQueryTest.jmx **ERROR** File solrjmeter.py, line 1427, in module main(sys.argv) File solrjmeter.py, line 1303, in main check_options(options, args) File solrjmeter.py, line 185, in check_options error(The folder '%s' does not exist % rf) File solrjmeter.py, line 66, in error traceback.print_stack() The folder '0' does not exist Dmitry On Wed, Aug 7, 2013 at 4:13 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Finally, this has worked! Thanks for quick support. The graphs look awesome. At least on the index sample :) It is quite easy to setup and run + possible to run directly on the shard server in background mode. my test run was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R foo -t /solr/statements -e statements Thanks! Dmitry On Wed, Aug 7, 2013 at 6:54 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, With fresh checkout, the reported admin_endpoint is: http://localhost:8983/solr/admin. This url redirects to http://localhost:8983/solr/#/ . I'm using solr 4.3.1. Is your tool supporting this version? Of three URLs you asked for, only the 3rd one gave response: {responseHeader:{status:0,QTime:5},defaultCoreName:null,initFailures:{},status:{metadata:{name:metadata,isDefaultCore:false,instanceDir:multicore/metadata/,dataDir:/home/dmitry/projects/SOLR/solr4/solr-4.3.1/example/multicore/metadata/data/,config:solrconfig.xml,schema:schema.xml,startTime:2013-08-06T12:10:43.438Z,uptime:260200,index:{numDocs:0,maxDoc:0,deletedDocs:0,version:1,segmentCount:0,current:true,hasDeletions:false,directory:org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/dmitry/projects/SOLR/solr4/solr-4.3.1/example/multicore/metadata/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@2d23b007; maxCacheMB=48.0 maxMergeSizeMB=4.0),userData:{},sizeInBytes:65,size:65 bytes}},statements:{name:statements,isDefaultCore:false,instanceDir:multicore/statements/,dataDir:/home/dmitry/projects/SOLR/solr4/solr-4.3.1/example/multicore/statements/data/,config:solrconfig.xml,schema:schema.xml,startTime:2013-08-06T12:10:43.468Z,uptime:260172,index:{numDocs:2588869,maxDoc:2588869,deletedDocs:0,version:45,segmentCount:1,current:true,hasDeletions:false,directory:org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(org.apache.lucene.store.MMapDirectory@/home/dmitry/projects/SOLR/solr4/solr-4.3.1/example/multicore/statements/data/index lockFactory=org.apache.lucene.store.NativeFSLockFactory@1f9b2b8; maxCacheMB=48.0 maxMergeSizeMB=4.0),userData:{commitTimeMSec:1375447171849},lastModified:2013-08-02T12:39:31.849Z,sizeInBytes:597238578,size:569.57 MB The rest report 404. Dmitry On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json If your core -t was '/solr/statements', the script should assume admin is at: /solr/admin (the script checks for /admin/system/cores - so that url already exists), thus I am guessing /admin/system is not there. if you can, please check out the latest version - the script will print its environment, the 'admin_endpoint' is the one that we are interested in. I'll update the docs, btw. you may want to use '-e statements' to indicate what core_name you want to harvest details for thanks, roman On Mon, Aug 5, 2013 at 6:22 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, No problem. Still trying to launch the thing.. The query with the added -t parameter generated an error: 1. python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test -t /solr/statements [passed relative path to -q param] (as you can see I added -t param and made -q param simpler) Traceback (most recent call last): File solrjmeter.py, line 1425, in module main(sys.argv) File solrjmeter.py, line 1379, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 505, in harvest_details_about_montysolr system_data = req('%s/system' % options.admin_endpoint) File solrjmeter.py, line 113, in req raise r simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) The README.md on the github is somehow outdated, it suggests using -q ./demo/queries/demo.queries, but there is no such path in the fresh checkout. Nice to have the -t param. Dmitry On Sat, Aug 3, 2013 at 5:01 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, Thanks, It was a toothing problem, fixed now, please try the fresh checkout AND add the following to your arguments: -t /solr/core1 that sets the path under which solr should be contacted, the handler is set in the jmeter configuration, so if you were using different query handlers than /select, it should be edited there (SolrQueryTest.jmx) I hope it works this time, the script is trying to guess the admin page (when one cannot be contacted - but if the new solr introduces some new paths, i may be wrong - i am short on time to investigate deeper) roman On Fri, Aug 2, 2013 at 7:27 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Sure: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test This is vanilla install (git clone) except for one change that I had to do related to solr cores:
Re: Measuring SOLR performance
On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi Dmitry, I've modified the solrjmeter to retrieve data from under the core (the -t parameter) and the rest from the /solr/admin - I could test it only against 4.0, but it is there the same as 4.3 - it seems...so you can try the fresh checkout my test was: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -t /solr/collection1 -R foo -q ./queries/demo/* -p 9002 -s adsate Thanks! roman On Tue, Aug 6, 2013 at 9:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi, Thanks for the clarification, Shawn! So with this in mind, the following work: http://localhost:8983/solr/statements/admin/system?wt=json http://localhost:8983/solr/statements/admin/mbeans?wt=json not copying their output to save space. Roman: is this something that should be set via -t parameter as well? Dmitry On Tue, Aug 6, 2013 at 4:34 PM, Shawn Heisey s...@elyograg.org wrote: On 8/6/2013 6:17 AM, Dmitry Kan wrote: Of three URLs you asked for, only the 3rd one gave response: snip The rest report 404. On Mon, Aug 5, 2013 at 8:38 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json Unless you have a valid defaultCoreName set in your (old-style) solr.xml, the first two URLs won't work, as you've discovered. Without that valid defaultCoreName (or if you wanted info from a different core), you'd need to add a core name to the URL for them to work. The third one, which works for you, is a global handler for manipulating cores, so naturally it doesn't need a core name to function. The URL path for this handler is defined by solr.xml. Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, No problem. Still trying to launch the thing.. The query with the added -t parameter generated an error: 1. python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test -t /solr/statements [passed relative path to -q param] (as you can see I added -t param and made -q param simpler) Traceback (most recent call last): File solrjmeter.py, line 1425, in module main(sys.argv) File solrjmeter.py, line 1379, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 505, in harvest_details_about_montysolr system_data = req('%s/system' % options.admin_endpoint) File solrjmeter.py, line 113, in req raise r simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) The README.md on the github is somehow outdated, it suggests using -q ./demo/queries/demo.queries, but there is no such path in the fresh checkout. Nice to have the -t param. Dmitry On Sat, Aug 3, 2013 at 5:01 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, Thanks, It was a toothing problem, fixed now, please try the fresh checkout AND add the following to your arguments: -t /solr/core1 that sets the path under which solr should be contacted, the handler is set in the jmeter configuration, so if you were using different query handlers than /select, it should be edited there (SolrQueryTest.jmx) I hope it works this time, the script is trying to guess the admin page (when one cannot be contacted - but if the new solr introduces some new paths, i may be wrong - i am short on time to investigate deeper) roman On Fri, Aug 2, 2013 at 7:27 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Sure: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test This is vanilla install (git clone) except for one change that I had to do related to solr cores: git diff diff --git a/solrjmeter.py b/solrjmeter.py index d18145a..7a0d2af 100644 --- a/solrjmeter.py +++ b/solrjmeter.py @@ -129,7 +129,7 @@ def check_options(options, args): if not options.serverName and not options.serverPort: error(You must specify both server and port) -options.query_endpoint = 'http://%s:%s/solr' % (options.serverName, options.serverPort) +options.query_endpoint = 'http://%s:%s/solr/core1' % (options.serverName, options.serverPort) jmx_options = [] for k, v in options.__dict__.items(): Dmitry On Thu, Aug 1, 2013 at 6:41 PM, Roman Chyla roman.ch...@gmail.com wrote: Dmitry, Can you post the entire invocation line? roman On Thu, Aug 1, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options)
Re: Measuring SOLR performance
Hi Dmitry, So I think the admin pages are different on your version of solr, what do you see when you request... ? http://localhost:8983/solr/admin/system?wt=json http://localhost:8983/solr/admin/mbeans?wt=json http://localhost:8983/solr/admin/cores?wt=json If your core -t was '/solr/statements', the script should assume admin is at: /solr/admin (the script checks for /admin/system/cores - so that url already exists), thus I am guessing /admin/system is not there. if you can, please check out the latest version - the script will print its environment, the 'admin_endpoint' is the one that we are interested in. I'll update the docs, btw. you may want to use '-e statements' to indicate what core_name you want to harvest details for thanks, roman On Mon, Aug 5, 2013 at 6:22 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, No problem. Still trying to launch the thing.. The query with the added -t parameter generated an error: 1. python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q ./queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test -t /solr/statements [passed relative path to -q param] (as you can see I added -t param and made -q param simpler) Traceback (most recent call last): File solrjmeter.py, line 1425, in module main(sys.argv) File solrjmeter.py, line 1379, in main before_test = harvest_details_about_montysolr(options) File solrjmeter.py, line 505, in harvest_details_about_montysolr system_data = req('%s/system' % options.admin_endpoint) File solrjmeter.py, line 113, in req raise r simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) The README.md on the github is somehow outdated, it suggests using -q ./demo/queries/demo.queries, but there is no such path in the fresh checkout. Nice to have the -t param. Dmitry On Sat, Aug 3, 2013 at 5:01 AM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, Thanks, It was a toothing problem, fixed now, please try the fresh checkout AND add the following to your arguments: -t /solr/core1 that sets the path under which solr should be contacted, the handler is set in the jmeter configuration, so if you were using different query handlers than /select, it should be edited there (SolrQueryTest.jmx) I hope it works this time, the script is trying to guess the admin page (when one cannot be contacted - but if the new solr introduces some new paths, i may be wrong - i am short on time to investigate deeper) roman On Fri, Aug 2, 2013 at 7:27 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Sure: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test This is vanilla install (git clone) except for one change that I had to do related to solr cores: git diff diff --git a/solrjmeter.py b/solrjmeter.py index d18145a..7a0d2af 100644 --- a/solrjmeter.py +++ b/solrjmeter.py @@ -129,7 +129,7 @@ def check_options(options, args): if not options.serverName and not options.serverPort: error(You must specify both server and port) -options.query_endpoint = 'http://%s:%s/solr' % (options.serverName, options.serverPort) +options.query_endpoint = 'http://%s:%s/solr/core1' % (options.serverName, options.serverPort) jmx_options = [] for k, v in options.__dict__.items(): Dmitry On Thu, Aug 1, 2013 at 6:41 PM, Roman Chyla roman.ch...@gmail.com wrote: Dmitry, Can you post the entire invocation line? roman On Thu, Aug 1, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should
Re: Measuring SOLR performance
Roman: Thanks for putting this together. I confess I haven't dug in in detail yet, but having the numbers available is a nice resource. Best Erick On Thu, Aug 1, 2013 at 6:23 PM, Roman Chyla roman.ch...@gmail.com wrote: On Thu, Aug 1, 2013 at 6:11 PM, Shawn Heisey s...@elyograg.org wrote: On 8/1/2013 2:08 PM, Roman Chyla wrote: Hi, here is a short post describing the results of the yesterday run with added parameters as per Shawn's recommendation, have fun getting confused ;) http://29min.wordpress.com/**2013/08/01/measuring-solr-**performance-ii/ http://29min.wordpress.com/2013/08/01/measuring-solr-performance-ii/ I am having a very difficult time with the graphs. I have no idea what I'm looking at. The graphs are probably self-explanatory to you, because you created them and you've been staring at them for hours. There are both lines and shaded areas, and I can't tell what they mean. I know :) but I am rather investing time in preparing a better test, because as you said, worst case is the aim - and I would like to trigger the worst case (btw, all these remaining GC configs have comparable max execution time of less than 1.5s - that is the worst case in their case so far and with so a few measurements, there is no meaningful analysis of significance between them). But when I look at the heights of the areas, in the charts, the higher means worse - so the yellow seems to be the worst (g1-custom), your preferred configuration (i think it was cms-x1, green) seems better than g1-custom. But 'SEEMS' is an important qualifier here Tables with numbers, if they have a good legend, would be awesome. tables are there, just hidden, you would have to run it - the code is there as well... One thing I'd like to see, and when I have some time of my own I will do some comprehensive long-term comparisons on production systems, is to see what adding or changing *one* GC tuning parameter at a time does, so I can find the ideal settings and have some idea of which settings make the most difference. My concern with garbage collection tuning has been mostly worst-case scenario pauses. I certainly do want averages to come down, but it's really the worst-case that concerns me. Let's say that one of my typical queries takes 100 milliseconds on average with my GC config. Somebody comes up with another GC config that makes the same query take 25 milliseconds or less on average. If that config also results in rare stop-the-world garbage collections that take 5 full seconds, I won't be using it. I'd rather deal with the slower average queries than the GC pause problems. exactly I had to let my production systems run for days with jHiccup before I really noticed that I had a GC pause problem. I've since learned that if I look at GC logs with GCLogViewer, I can get much the same information. well, and instead of days, I think it is possible to trigger the worst case scenario in a matter of hours (but that is my conjecture, to be proven wrong... ;)) roman Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, Sure: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test This is vanilla install (git clone) except for one change that I had to do related to solr cores: git diff diff --git a/solrjmeter.py b/solrjmeter.py index d18145a..7a0d2af 100644 --- a/solrjmeter.py +++ b/solrjmeter.py @@ -129,7 +129,7 @@ def check_options(options, args): if not options.serverName and not options.serverPort: error(You must specify both server and port) -options.query_endpoint = 'http://%s:%s/solr' % (options.serverName, options.serverPort) +options.query_endpoint = 'http://%s:%s/solr/core1' % (options.serverName, options.serverPort) jmx_options = [] for k, v in options.__dict__.items(): Dmitry On Thu, Aug 1, 2013 at 6:41 PM, Roman Chyla roman.ch...@gmail.com wrote: Dmitry, Can you post the entire invocation line? roman On Thu, Aug 1, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.com wrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
Hi Dmitry, Thanks, It was a toothing problem, fixed now, please try the fresh checkout AND add the following to your arguments: -t /solr/core1 that sets the path under which solr should be contacted, the handler is set in the jmeter configuration, so if you were using different query handlers than /select, it should be edited there (SolrQueryTest.jmx) I hope it works this time, the script is trying to guess the admin page (when one cannot be contacted - but if the new solr introduces some new paths, i may be wrong - i am short on time to investigate deeper) roman On Fri, Aug 2, 2013 at 7:27 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, Sure: python solrjmeter.py -a -x ./jmx/SolrQueryTest.jmx -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries -s localhost -p 8983 -a --durationInSecs 60 -R test This is vanilla install (git clone) except for one change that I had to do related to solr cores: git diff diff --git a/solrjmeter.py b/solrjmeter.py index d18145a..7a0d2af 100644 --- a/solrjmeter.py +++ b/solrjmeter.py @@ -129,7 +129,7 @@ def check_options(options, args): if not options.serverName and not options.serverPort: error(You must specify both server and port) -options.query_endpoint = 'http://%s:%s/solr' % (options.serverName, options.serverPort) +options.query_endpoint = 'http://%s:%s/solr/core1' % (options.serverName, options.serverPort) jmx_options = [] for k, v in options.__dict__.items(): Dmitry On Thu, Aug 1, 2013 at 6:41 PM, Roman Chyla roman.ch...@gmail.com wrote: Dmitry, Can you post the entire invocation line? roman On Thu, Aug 1, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.com wrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
Yes, UseNuma is only for Parallel Scavenger garbage collector and only for Solaris 9 and higher and Linux kernel 2.6.19 and glibc 2.6.1. And it performs with 64-bit better than 32-bit. So no effects for G1. With standard applications CMS is very slightly better than G1 but when it comes to huge heaps with high fragmentation G1 is better than CMS. The documentation says, one benefit of G1 is if the application has more than 50% of the Java heap occupied with live data. So first step is to size the heap that you have about 3/4 of the heap occupied with live data and then go on comparing CMS against G1. Otherwise G1 and CMS are about same or as I said CMS might be slightly better. Also, either turn swap off or also record vmstat. This should make sure that during a garbage collection no other system activity, like moving JVM heap to swap in background, is distorting your measurements. Bernd Am 31.07.2013 05:01, schrieb Shawn Heisey: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.com wrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
Dmitry, Can you post the entire invocation line? roman On Thu, Aug 1, 2013 at 7:46 AM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, When I try to run with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries here what is reported: Traceback (most recent call last): File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1309, in main tests = find_tests(options) File solrjmeter.py, line 461, in find_tests with changed_dir(pattern): File /usr/lib/python2.7/contextlib.py, line 17, in __enter__ return self.gen.next() File solrjmeter.py, line 229, in changed_dir os.chdir(new) OSError: [Errno 20] Not a directory: '/home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries' Best, Dmitry On Wed, Jul 31, 2013 at 7:21 PM, Roman Chyla roman.ch...@gmail.com wrote: Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.com wrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
Hi Bernd, On Thu, Aug 1, 2013 at 4:07 AM, Bernd Fehling bernd.fehl...@uni-bielefeld.de wrote: Yes, UseNuma is only for Parallel Scavenger garbage collector and only for Solaris 9 and higher and Linux kernel 2.6.19 and glibc 2.6.1. And it performs with 64-bit better than 32-bit. So no effects for G1. With standard applications CMS is very slightly better than G1 but when it comes to huge heaps with high fragmentation G1 is better than CMS. The documentation says, one benefit of G1 is if the application has more than 50% of the Java heap occupied with live data. Could you rephrase this bit please? I don't understand it, but I think it is important concern. So first step is to size the heap that you have about 3/4 of the heap occupied with live data and then go on comparing CMS against G1. Thanks, roman Otherwise G1 and CMS are about same or as I said CMS might be slightly better. Also, either turn swap off or also record vmstat. This should make sure that during a garbage collection no other system activity, like moving JVM heap to swap in background, is distorting your measurements. Bernd Am 31.07.2013 05:01, schrieb Shawn Heisey: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
Re: Measuring SOLR performance
Hi, here is a short post describing the results of the yesterday run with added parameters as per Shawn's recommendation, have fun getting confused ;) http://29min.wordpress.com/2013/08/01/measuring-solr-performance-ii/ roman On Wed, Jul 31, 2013 at 12:32 PM, Roman Chyla roman.ch...@gmail.com wrote: I'll try to run it with the new parameters and let you know how it goes. I've rechecked details for the G1 (default) garbage collector run and I can confirm that 2 out of 3 runs were showing high max response times, in some cases even 10secs, but the customized G1 never - so definitely the parameters had effect because the max time for the customized G1 never went higher than 1.5secs (and that happend for 2 query classes only). Both the cms-custom and G1-custom are similar, the G1 seems to have higher values in the max fields, but that may be random. So, yes, now I am sure what to think of default G1 as 'bad', and that these G1 parameters, even if they don't seem G1 specific, have real effect. Thanks, roman On Tue, Jul 30, 2013 at 11:01 PM, Shawn Heisey s...@elyograg.org wrote: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
Re: Measuring SOLR performance
On 8/1/2013 2:08 PM, Roman Chyla wrote: Hi, here is a short post describing the results of the yesterday run with added parameters as per Shawn's recommendation, have fun getting confused ;) http://29min.wordpress.com/2013/08/01/measuring-solr-performance-ii/ I am having a very difficult time with the graphs. I have no idea what I'm looking at. The graphs are probably self-explanatory to you, because you created them and you've been staring at them for hours. There are both lines and shaded areas, and I can't tell what they mean. Tables with numbers, if they have a good legend, would be awesome. One thing I'd like to see, and when I have some time of my own I will do some comprehensive long-term comparisons on production systems, is to see what adding or changing *one* GC tuning parameter at a time does, so I can find the ideal settings and have some idea of which settings make the most difference. My concern with garbage collection tuning has been mostly worst-case scenario pauses. I certainly do want averages to come down, but it's really the worst-case that concerns me. Let's say that one of my typical queries takes 100 milliseconds on average with my GC config. Somebody comes up with another GC config that makes the same query take 25 milliseconds or less on average. If that config also results in rare stop-the-world garbage collections that take 5 full seconds, I won't be using it. I'd rather deal with the slower average queries than the GC pause problems. I had to let my production systems run for days with jHiccup before I really noticed that I had a GC pause problem. I've since learned that if I look at GC logs with GCLogViewer, I can get much the same information. Thanks, Shawn
Re: Measuring SOLR performance
On Thu, Aug 1, 2013 at 6:11 PM, Shawn Heisey s...@elyograg.org wrote: On 8/1/2013 2:08 PM, Roman Chyla wrote: Hi, here is a short post describing the results of the yesterday run with added parameters as per Shawn's recommendation, have fun getting confused ;) http://29min.wordpress.com/**2013/08/01/measuring-solr-**performance-ii/http://29min.wordpress.com/2013/08/01/measuring-solr-performance-ii/ I am having a very difficult time with the graphs. I have no idea what I'm looking at. The graphs are probably self-explanatory to you, because you created them and you've been staring at them for hours. There are both lines and shaded areas, and I can't tell what they mean. I know :) but I am rather investing time in preparing a better test, because as you said, worst case is the aim - and I would like to trigger the worst case (btw, all these remaining GC configs have comparable max execution time of less than 1.5s - that is the worst case in their case so far and with so a few measurements, there is no meaningful analysis of significance between them). But when I look at the heights of the areas, in the charts, the higher means worse - so the yellow seems to be the worst (g1-custom), your preferred configuration (i think it was cms-x1, green) seems better than g1-custom. But 'SEEMS' is an important qualifier here Tables with numbers, if they have a good legend, would be awesome. tables are there, just hidden, you would have to run it - the code is there as well... One thing I'd like to see, and when I have some time of my own I will do some comprehensive long-term comparisons on production systems, is to see what adding or changing *one* GC tuning parameter at a time does, so I can find the ideal settings and have some idea of which settings make the most difference. My concern with garbage collection tuning has been mostly worst-case scenario pauses. I certainly do want averages to come down, but it's really the worst-case that concerns me. Let's say that one of my typical queries takes 100 milliseconds on average with my GC config. Somebody comes up with another GC config that makes the same query take 25 milliseconds or less on average. If that config also results in rare stop-the-world garbage collections that take 5 full seconds, I won't be using it. I'd rather deal with the slower average queries than the GC pause problems. exactly I had to let my production systems run for days with jHiccup before I really noticed that I had a GC pause problem. I've since learned that if I look at GC logs with GCLogViewer, I can get much the same information. well, and instead of days, I think it is possible to trigger the worst case scenario in a matter of hours (but that is my conjecture, to be proven wrong... ;)) roman Thanks, Shawn
Re: Measuring SOLR performance
Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.com wrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.comwrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
On 7/31/2013 12:24 AM, William Bell wrote: But that link does not tell me which on you are using? You are listing like 4 versions on your site. Also, what did it fix? Pause times? Any other words of wisdom ? I'm not sure whether that was directed at me or Roman, but here's my answers: I run one copy of my index on Solr 3.5.0 and another copy on Solr 4.2.1. I have a completely separate (and much smaller) index using SolrCloud on 4.2.1. I was seeing GC pause times of 8-10 seconds on both 3.5.0 and 4.2.1 with an untuned CMS collector. When I switched that to G1 (also untuned), I was seeing pause times of 12 seconds. The average GC time did go down, but the long stop-the-world pauses were worse. I used the jHiccup tool to see the problem. I went to a CMS config much like what Roman used on his benchmarks, and that improved things greatly, but I was still seeing occasional pauses long enough to make my load balancer ping check (5 second timeout) think that the index had gone down. I later tried the CMS config that's on my wiki page. That seems to have fixed my load balancer problem. I do still see pauses of up to a second, but they are not frequent. We have more page load delay from our webapp than we do from Solr, so users aren't noticing when searches occasionally take a little longer. Thanks, Shawn
Re: Measuring SOLR performance
Hi Dmitry, probably mistake in the readme, try calling it with -q /home/dmitry/projects/lab/solrjmeter/queries/demo/demo.queries as for the base_url, i was testing it on solr4.0, where it tries contactin /solr/admin/system - is it different for 4.3? I guess I should make it configurable (it already is, the endpoint is set at the check_options()) thanks roman On Wed, Jul 31, 2013 at 10:01 AM, Dmitry Kan solrexp...@gmail.com wrote: Ok, got the error fixed by modifying the base solr ulr in solrjmeter.py (added core name after /solr part). Next error is: WARNING: no test name(s) supplied nor found in: ['/home/dmitry/projects/lab/solrjmeter/demo/queries/demo.queries'] It is a 'slow start with new tool' symptom I guess.. :) On Wed, Jul 31, 2013 at 4:39 PM, Dmitry Kan solrexp...@gmail.com wrote: Hi Roman, What version and config of SOLR does the tool expect? Tried to run, but got: **ERROR** File solrjmeter.py, line 1390, in module main(sys.argv) File solrjmeter.py, line 1296, in main check_prerequisities(options) File solrjmeter.py, line 351, in check_prerequisities error('Cannot contact: %s' % options.query_endpoint) File solrjmeter.py, line 66, in error traceback.print_stack() Cannot contact: http://localhost:8983/solr complains about URL, clicking which leads properly to the admin page... solr 4.3.1, 2 cores shard Dmitry On Wed, Jul 31, 2013 at 3:59 AM, Roman Chyla roman.ch...@gmail.comwrote: Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
I'll try to run it with the new parameters and let you know how it goes. I've rechecked details for the G1 (default) garbage collector run and I can confirm that 2 out of 3 runs were showing high max response times, in some cases even 10secs, but the customized G1 never - so definitely the parameters had effect because the max time for the customized G1 never went higher than 1.5secs (and that happend for 2 query classes only). Both the cms-custom and G1-custom are similar, the G1 seems to have higher values in the max fields, but that may be random. So, yes, now I am sure what to think of default G1 as 'bad', and that these G1 parameters, even if they don't seem G1 specific, have real effect. Thanks, roman On Tue, Jul 30, 2013 at 11:01 PM, Shawn Heisey s...@elyograg.org wrote: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
RE: Measuring SOLR performance
Did you also test indexing speed? With default G1GC settings we're seeing a slightly higher latency for queries than CMS. However, G1GC allows for much higher throughput than CMS when indexing. I haven't got the raw numbers here but it is roughly 45 minutes against 60 in favour of G1GC! Load is obviously higher with G1GC. -Original message- From:Roman Chyla roman.ch...@gmail.com Sent: Wednesday 31st July 2013 18:32 To: solr-user@lucene.apache.org Subject: Re: Measuring SOLR performance I'll try to run it with the new parameters and let you know how it goes. I've rechecked details for the G1 (default) garbage collector run and I can confirm that 2 out of 3 runs were showing high max response times, in some cases even 10secs, but the customized G1 never - so definitely the parameters had effect because the max time for the customized G1 never went higher than 1.5secs (and that happend for 2 query classes only). Both the cms-custom and G1-custom are similar, the G1 seems to have higher values in the max fields, but that may be random. So, yes, now I am sure what to think of default G1 as 'bad', and that these G1 parameters, even if they don't seem G1 specific, have real effect. Thanks, roman On Tue, Jul 30, 2013 at 11:01 PM, Shawn Heisey s...@elyograg.org wrote: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
Re: Measuring SOLR performance
No, I haven't had time for that (and unlikely won't have for the next few weeks), but it is on the list - if it is 25% improvement, it would be really worth of the change to G1. Thanks, roman On Wed, Jul 31, 2013 at 1:00 PM, Markus Jelsma markus.jel...@openindex.iowrote: Did you also test indexing speed? With default G1GC settings we're seeing a slightly higher latency for queries than CMS. However, G1GC allows for much higher throughput than CMS when indexing. I haven't got the raw numbers here but it is roughly 45 minutes against 60 in favour of G1GC! Load is obviously higher with G1GC. -Original message- From:Roman Chyla roman.ch...@gmail.com Sent: Wednesday 31st July 2013 18:32 To: solr-user@lucene.apache.org Subject: Re: Measuring SOLR performance I'll try to run it with the new parameters and let you know how it goes. I've rechecked details for the G1 (default) garbage collector run and I can confirm that 2 out of 3 runs were showing high max response times, in some cases even 10secs, but the customized G1 never - so definitely the parameters had effect because the max time for the customized G1 never went higher than 1.5secs (and that happend for 2 query classes only). Both the cms-custom and G1-custom are similar, the G1 seems to have higher values in the max fields, but that may be random. So, yes, now I am sure what to think of default G1 as 'bad', and that these G1 parameters, even if they don't seem G1 specific, have real effect. Thanks, roman On Tue, Jul 30, 2013 at 11:01 PM, Shawn Heisey s...@elyograg.org wrote: On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn
Measuring SOLR performance
Hello, I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! roman
Re: Measuring SOLR performance
On 7/30/2013 6:59 PM, Roman Chyla wrote: I have been wanting some tools for measuring performance of SOLR, similar to Mike McCandles' lucene benchmark. so yet another monitor was born, is described here: http://29min.wordpress.com/2013/07/31/measuring-solr-query-performance/ I tested it on the problem of garbage collectors (see the blogs for details) and so far I can't conclude whether highly customized G1 is better than highly customized CMS, but I think interesting details can be seen there. Hope this helps someone, and of course, feel free to improve the tool and share! I have a CMS config that's even more tuned than before, and it has made things MUCH better. This new config is inspired by more info that I got on IRC: http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning The G1 customizations in your blog post don't look like they are really G1-specific - they may be useful with CMS as well. This statement also applies to some of the CMS parameters, so I would use those with G1 as well for any testing. UseNUMA looks interesting for machines that actually are NUMA. All the information that I can find says it is only for the throughput (parallel) collector, so it's probably not doing anything for G1. The pause parameters you've got for G1 are targets only. It will *try* to stick within those parameters, but if a collection requires more than 50 milliseconds or has to happen more often than once a second, the collector will ignore what you have told it. Thanks, Shawn