On 1/19/2016 3:43 AM, Damien Picard wrote:
> I'm currently testing Solr query execution performance (over http and
> SolrJ), and, using HTTP with JMeter, I see that the response time increases
> with the number of concurrent request (100 simultaneous request in my case).
>
> To understand where Solr takes more time, I use the debug=timing parameter.
> And I see this kind of response :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <response>
>
> <lst name="responseHeader">
>   <int name="status">0</int>
>   <int name="QTime">3003</int>
>   <lst name="params">
>     <str name="q">uuid:FA2C9342381E3969E04456C8B4C639A9</str>
>     <str name="debug">timing</str>
>     <str name="indent">true</str>
>     <str name="wt">xml</str>
>   </lst>
> </lst>
> <result name="response" numFound="1" start="0" maxScore="15.705477">
>   <doc>
>     <bool name="bc_repe_pro">false</bool>
>     <str name="type_personne">P</str>
>     <str name="numero_dossier_client">30000224149</str>
>     <str name="uuid">FA2C9342381E3969E04456C8B4C639A9</str>
>     <str name="cle_recherche">FA2C9342381E3969E04456C8B4C639A9_P</str>
>     <long name="_version_">1518391139884859416</long></doc>
> </result>
> <lst name="debug">
>   <lst name="timing">
>     <double name="time">0.0</double>
>     <lst name="prepare">
>       <double name="time">0.0</double>
>       <lst name="query">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="facet">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="mlt">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="highlight">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="stats">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="debug">
>         <double name="time">0.0</double>
>       </lst>
>     </lst>
>     <lst name="process">
>       <double name="time">0.0</double>
>       <lst name="query">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="facet">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="mlt">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="highlight">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="stats">
>         <double name="time">0.0</double>
>       </lst>
>       <lst name="debug">
>         <double name="time">0.0</double>
>       </lst>
>     </lst>
>   </lst>
> </lst>
> </response>

QTime is not part of the debug.  It is included on all results, whether
debug is turned on or not.  I am not sure why all your debug information
says zero.  Usually the total of all the debugs does not add up to
QTime, but this is an extreme imbalance.

QTime is the amount of time spent gathering result information -- the
internal Lucene identifiers of the documents counted for numFound.  The
response does not indicate the amount of time that was spent retrieving
the actual search results from the stored fields and sending those
results to the client, but with only one document found, those things
would be extremely fast.

Running 100 queries concurrently is usually enough to topple *any*
single Solr server unless the index is very small.  If you need to scale
up this far, you will need multiple replicas of your index.

If you are not running a performance benchmark, how long does a single
query like this take?  If this kind of QTime is normal even when not
hammering the server, then you probably don't have enough memory.

Thanks,
Shawn

Reply via email to