Return-Path: Delivered-To: apmail-jakarta-lucene-user-archive@apache.org Received: (qmail 83993 invoked from network); 20 Dec 2002 16:57:32 -0000 Received: from exchange.sun.com (HELO nagoya.betaversion.org) (192.18.33.10) by daedalus.apache.org with SMTP; 20 Dec 2002 16:57:32 -0000 Received: (qmail 26565 invoked by uid 97); 20 Dec 2002 16:58:37 -0000 Delivered-To: qmlist-jakarta-archive-lucene-user@jakarta.apache.org Received: (qmail 26519 invoked by uid 97); 20 Dec 2002 16:58:36 -0000 Mailing-List: contact lucene-user-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Lucene Users List" Reply-To: "Lucene Users List" Delivered-To: mailing list lucene-user@jakarta.apache.org Received: (qmail 26460 invoked by uid 98); 20 Dec 2002 16:58:34 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Message-Id: <818623B5FD23D51193200002B32C076106FE4980@excsrv44.mayo.edu> From: "Armbrust, Daniel C." To: 'Lucene Users List' Subject: Lucene Benchmarks and Information Date: Fri, 20 Dec 2002 10:57:04 -0600 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01C2A848.D283A630" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ------_=_NextPart_000_01C2A848.D283A630 Content-Type: text/plain I've been running some scalability tests on Lucene over the past couple of weeks. While there may be some flaws with some of my methods, I think they will be useful for people that want an idea as to how Lucene will scale. If anyone has any questions about what I did, or wants clarifications on something, I'll be happy to provide them. I'll start by filling out the form Hardware Environment * Dedicated machine for indexing: yes * CPU: 1 2.53 GHz Pentium 4 * RAM: Self-explanatory * Drive configuration: 100 GB 7200 RPM IDE, 80 GB 7200 RPM IDE Software environment * Java Version: java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM Windows 32 build cn131-20020403 (JIT enabled: jitc)) * OS Version: Win XP SP1 * Location of index: Local File Systems Lucene indexing variables * Number of source documents: 43,779,000 * Total filesize of source documents: ~350 GB -- never stored (documents were randomly generated) * Average filesize of source documents: 8 KB * Source documents storage location: Generated while indexing, never written to disk * File type of source documents: text * Parser(s) used, if any: None * Analyzer(s) used: Standard Analyzer * Number of fields per document: 2 * Type of fields: text, Unstored * Index persistence: FSDirectory Figures * Time taken (in ms/s as an average of at least 3 indexing runs): See notes below * Time taken / 1000 docs indexed: 6.5 seconds/1000, not counting optimization time. 15 seconds/1000 when optimizing every 100,000 documents, and building an index to ~ 5 million documents. Above 5 million documents, optimization took too much time. See notes below. * Memory consumption: ~ 200 mb * Index Size: 70.7 GB Notes * Notes: The documents were randomly generated on the fly as part of the indexing process from a list of ~100,000 words, who's average length was 7. The documents had 3 words in the title, and 500 words in the body. While I was trying to build this index, the biggest limitation of Lucene that I ran into was optimization. Optimization kills the indexers performance when you get between 3-5 million documents in an index. On my Windows XP box, I had to reoptimize every 100,000 documents to keep from running out of file handles. While I could build a 5 million document index in 24 hours... I could only add about another million over the next 24 hours due to the pain of the optimizer recopying the entire index over and over again (about 10 GB at this point), and it would only get worse from there. So, to build this large of an index, I built several ~ 5 million document indexes, and then merged them at the end into a single index. The second issue (though not really a problem) was that you have to have at least double the disk space available to build the index as you need when you are done. I could have kept building the index bigger, but I ran out of disk space. When I was done building indexes, I ran some query's against them to see how the search performance varied with the size of the index. Following are my results for various size indexes. Index Size (GB) MS per query 4.53 83 7.92 83 10 89 12.7 112 52.5 694 70.7 944 These numbers are an average of 3 runs of 500 randomly generated queries being tossed at the index (single threaded) on the same hardware that built the index. The queries were randomly generated (about 50 % of the queries had 0 results, 50% had 1 or more results) I was happy to see that these numbers make a nice linear plot (attached). I'm not sure what other comments to add here, other to thank the authors of Lucene for their great design and implementation of Lucene. If anyone has anything else they would like me to test on this index before I dump it... Speak up quick, I have to pull out one of the hard drives this weekend to pass it on to its real owner. Dan ------_=_NextPart_000_01C2A848.D283A630 Content-Type: image/gif; name="gb mv speed (ms).gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gb mv speed (ms).gif" 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 ------_=_NextPart_000_01C2A848.D283A630 Content-Type: text/plain; charset=us-ascii -- To unsubscribe, e-mail: For additional commands, e-mail: ------_=_NextPart_000_01C2A848.D283A630--