SlideShare a Scribd company logo
1 of 35
Download to read offline
OpenProdoc



Benchmarking the ECM OpenProdoc v 0.8.

Managing more than 200.000 documents/hour in a SOHO installation.



                                                   February 2013

                                                                    1
Index
 Introduction
 Objectives
 Description of OpenProdoc
 Test Criteria
 Infrastructure
 Realization of the Test
 Results and Graphs
 Analysis and Conclusions
 Using OpenProdoc

                              2
Introduction
 OpenProdoc is an Open Source ECM Document
  Manager developed in Java.
 This document describes different Load Tests
  performed over several days with OpenProdoc v 0.8.
 The objective of the tests was to measure the behavior
  of OpenProdoc in different scenarios and to measure
  the speed that can be obtained with a small
  infrastructure that can be used even by the smallest
  organization.
 The tests were run using a program developed for the
  tests. It’s known the expression “Lies, big lies and
  statistics”, so the source and a “test kit” are available
  with the version 0.8 program. With the kit it’s possible
  to run the test in your environ and compare the results.

                                                          3
Objectives
   The tests were defined with three objectives:
    ◦ To check the behaviour of OpenProdoc under stress conditions,
      detecting potential problems.
    ◦ To measure the speed to manage documents
    ◦ To detect the influence of different factors in the performance of
      OpenProdoc.
   It wasn't objective of the tests finding the database nor
    the O.S. that works best with OpenProdoc.
   There are too many elements that can affect the
    behavior of any product, so it was elected to limit to a
    manageable number of significant factors.
   For automating the test was developed a program that
    allows to execute different sets of tests and measure
    results.
                                                                       4
Description of OpenProdoc (I)
   To better understand the elements to be measured and
    the influence of different factors, it is first necessary to
    briefly explain the architecture of OpenProdoc.
   The heart of OpenProdoc is its core. The core manages
    all the logic and functionality of the product.
   The core include “connectors” for managing all its
    functionality. There are different connectors for each
    functionality (Metadata management, Document’s
    repositories, Authentication) and it’s possible to develop
    and include new connectors of each class.
   The core itself is very small (<1M) so can be embedded
    in any application. The Swing and Web clients of
    OpenProdoc embed the core, and any application (J2EE
    or not) can embed also the core.
                                                               5
Description of OpenProdoc (II)

                          DD.BB.
                          Metadata
          Metadata
         Connector

         Repository      DD.BB. Blob
         Connector       Documents
         Repository
         Connector
                         Filesystem
 Core
        Authentication
         Connector          Ldap
        Authentication
         Connector
                            DD.BB.
                         Authentication




                                          6
Description of OpenProdoc (III)

              Java Application
            (Swing / thick client)

                     OPD Core
                                       BB.DD.
                                      DD.BB.
                                      Metadato
                                      Metadata
              J2EE Application

                     OPD Core
                                     Filesystem

              J2EE Web Client
                OpenProdoc
                                     Filesystem
                     OPD Core
OPD Core

Connector
MD OPD
              Under Development
                                                  7
Test Criteria (I)
   The test is based in a simple program developed for the
    test, not in the OpenProdoc clients. There are several
    reasons for this election:
    ◦ The Swing client is not valid due its single user/thread nature.
    ◦ A test with the Web client deployed in any J2EE application
      server mixes the J2EE server performance, the simulated
      “browser” performance and the OpenProdoc Engine
      performance.
    ◦ Additionally, the use of ajax distorts this kind of test.
    ◦ The OpenProdoc core can be embedded in any application.
   So the solution selected is to test the OpenProdoc
    core with a multithread development.
   This shows the OPD raw performance and makes very
    easy to test different combinations and also to
    reproduce the tests in any environ and installation.
                                                                         8
Test Criteria (II)
 Additionally, many ECM products include some kind of
  “Bulk Loader”.
 When a project requires to load thousands or hundreds
  of thousands of documents every day, it’s unusual to
  use the standard client. A Scanning capture system, a
  massive loader, some kind of development or EAI is
  used.
 In OpenProdoc, the API used in the Load Test is the
  standard API, not a program using some “backdoor
  access”. So this is the performance that any
  development or integration can obtain.
 Therefore, the tests measure the speed and the
  influence of different factors in the performance of the
  OpenProdoc core.
                                                         9
Test Criteria (III)
   What are the factors studied?
    1.    Running the core and the server in the same machine or
          different machines.
    2.    Different number of threads.
    3.    Document types of different complexity.
    4.    Different size of documents.
    5.    Different database servers.
    6.    Different kind of repositories
   In every test, it’s measured the speed of four common
    operations over documents:
    ◦    Insert
    ◦    Download
    ◦    Delete
    ◦    Purge
   Also it’s monitored the JVM running the OpenProdoc
    core to show the load over the computer.
                                                                   10
Test Criteria (IV)
   The test were intended to be repeatable and “real”, no
    a “laboratory test”, so:
    ◦ The databases used are two Open Source Databases:
       HSQLDB (used in the portable version of OpenProdoc)
       MySQL (Widely used in many projects)
    ◦ The databases are used “out-of-the-box”, without any fine-
      tuning.
    ◦ The computers are desktop and portable PC with very standard
      specifications, no dedicated servers.
    ◦ The Lan is connected using a home ADSL router.




                                                                 11
Infrastructure (I)
    Test series with 1 PC:
    PC 1:
     ◦ OS: Linux Mint 14. kernel 3.5 32 bits
     ◦ CPU: AMD Phenom II X4 955. 4 nucleus 1.6 GHz
     ◦ RAM: 4 G.
     ◦ Disc: 500G SATA
     ◦ Java 1.6.0.22
    Functions:
     ◦ Database server (HSQLDB 2.2.8, MySQL 5.5.29)
     ◦ Repository server (File System)
     ◦ Test-OpenProdoc run (OpenProdoc 0.8)




                                                      12
Infrastructure (II)
    Test series with 3 PC:
    PC 1:
     ◦ OS: Linux Mint 14. kernel 3.5 32 bits
     ◦ CPU: AMD Phenom II X4 955. 4 nucleus 1.6 GHz
     ◦ RAM: 4 G, Disc: 500G SATA
     ◦ Java: 1.6.0.22
     ◦ Function: Database server (HSQLDB 2.2.8)
    PC 2:
     ◦ OS: Windows 7 Profesional 32bits
     ◦ CPU: Intel Centrino Core Duo T7500 2 nucleus 2.2GHz
     ◦ RAM: 3 G, Disc: 200G
     ◦ Function: Repository server (FileSystem)
    PC 3:
     ◦ OS: Windows 7 Enterprise 32bits
     ◦ CPU: Intel Core i5. 4 nucleus 2.4GHz
     ◦ RAM: 4 G, Disc: 250G
     ◦ Java: 1.6.0.22
     ◦ Function: Test-OpenProdoc run (OpenProdoc 0.8)

                                                             13
Infrastructure (III)
   Test series with 3 PC:
PC 1: Database Server



                                              PC 3: Test / OpenProdoc Core




PC 2: File Server (*)




           * It was intended to use a (home) NAS disk as File server, but the
           measures showed a very low speed. (x4 slower than PC 2). Some
           Internet investigations showed that the family of disk has some speed
           problems, so the test results were discarded.                           14
Realization of the Test
   The program developed for the test, executes the
    instructions:
    ◦ Reads the configuration file, that details the document to be
      inserted, the number of threads, the number of documents to
      be used and the document type.
    ◦ Creates local copies of the source documents, so that they are
      inserted from different files and not always from the same file in
      cache.
    ◦ Creates a folder in OpenProdoc for storing the folders and
      documents of the tests.
    ◦ For every set of tests:
       Starts the specified number of threads for insertion.
       Measures the time from the start of the first thread to the end of the
        last thread.
       Repeats the process for download threads, delete threads and purge threads.
       Saves the measured data
       Deletes the downloaded documents
    ◦ Deletes the local copies of the document used for insertion.
                                                                                  15
Results and Graphs. Local Tests (I)
           Test managing from 1 to 30 threads, 2.000 to 60.000 docs of 100k
3.000.000




2.500.000




2.000.000


                                                                                    Docs.Ins/h
1.500.000                                                                           Docs.Down/h
                                                                                    Docs.Del/h
                                                                                    Docs.Purge/h

1.000.000




 500.000




            0          5         10          15         20         25          30

                                                                                             16
Results and Graphs. Local Tests (II)
   The graph shows the times measured running the
    OpenProdoc core, the database and the repository in
    one computer.
   The maximum number of documents inserted (878.000
    docs/h) is obtained using 5 threads.
   The Download, Purge and Delete functions decrease
    with the number of threads, but even with 30 threads,
    the purge and delete rate is around 100.000 docs/h.
   This configuration has the advantage of avoiding
    communications, but the disk and CPU have a higher
    load.



                                                         17
Results and Graphs. Doc. Type (I)
           Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two types
3.000.000




2.500.000




2.000.000


                                                                                  Ins DocBasic/h
1.500.000                                                                         Ins DocComp/h
                                                                                  Del DocBasic/h
                                                                                  Del DocComp/h
1.000.000




 500.000




            0     1     2     3      4     5      6     7     8      9     10



                                                                                              18
Results and Graphs. Doc. Type (II)
 The graph shows the times measured running the
  OpenProdoc core, the database and the repository in
  one computer with two document types, the basic type
  and a compound type, subtype of the first one.
 The document types in OpenProdoc are structured as
  related tables, so when the hierarchy level grows, the
  operations affect to more tables and are slower.
 The insertion speed is very similar because the time is
  used mainly in the upload and storing of the file in the
  repository.
 Operations as delete or queries are slower for complex
  types because internally OpenProdoc needs to access
  more tables.

                                                         19
Results and Graphs. HSQLDB vs MySQL (I)
           Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two DD.BB.
3.000.000




2.500.000




2.000.000


                                                                                Ins DocHSQLDB/h
1.500.000                                                                       Ins DocMySQL/h
                                                                                Del DocHSQLDB/h
                                                                                Del DocMySQL/h

1.000.000




 500.000




            0     1     2     3     4     5     6     7      8     9     10

                                                                                             20
Results and Graphs. HSQLDB vs MySQL (I)
   The graph shows the times measured running the
    OpenProdoc core, the database and the repository in
    one computer with different database servers.
   With the default configuration, the performance obtained
    with HSQLDB is better than with MySQL, not only in
    operation with documents management but in operations
    with metadata management (the Delete only moves
    documents to the trash bin, without actually deleting the
    file, that is eliminated with the Purge).
   MySQL maintains the performance when increasing the
    number of threads, however HSQLDB decreases the
    performance, although is always better than MySQL.
   Of course, with fine tuning of the databases, the values
    probably can change, but it’s out of the scope of this tests.
                                                              21
Results and Graphs. Local vs Remote (I)
           Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two architectures
2.500.000




2.000.000



                                                                                         L.Ins/h

1.500.000
                                                                                         L.Down/h
                                                                                         L.Del/h
                                                                                         L.Purge/h
                                                                                         R.Ins/h
1.000.000                                                                                R.Down/h
                                                                                         R.Del/h
                                                                                         R.Purge/h

 500.000




            1      2       3       4      5       6       7       8      9       10

                                                                                               22
Results and Graphs. Local vs Remote (I)
 The graph shows the times measured running the
  OpenProdoc core, the database and the repository in
  one computer (local) or in three different computers.
 In general, the speed when all the elements are in the
  same computer is around 4 times the speed with the
  elements distributed in different computers.
 The only exception is the delete function due that is
  related only to database and not to repository/filesystem.
 This shows that a fast filesystem is the key to improve the
  performance with this architecture.
 Anyway, the insert speed is 200.000 docs/h, the download
  speed is 348.000 docs/h and the purge speed is 300.000
  docs/h, enough throughput for most of the installations.

                                                          23
Results and Graphs. Document Size (I)
           Test managing from 1 to 5 threads, 2.000 to 10.000 docs of 100k, 200k, 300k and 400k
1.600.000



1.400.000



1.200.000


                                                                                        100.Ins/h
1.000.000
                                                                                        100.Down/h
                                                                                        200.Ins/h
 800.000                                                                                200.Down/h
                                                                                        300.Ins/h
                                                                                        300.Down/h
 600.000
                                                                                        400.Ins/h
                                                                                        400.Down/h

 400.000



 200.000




            1       1,5       2       2,5      3       3,5       4       4,5      5


                                                                                               24
Results and Graphs. Document Size (II)
   The graph shows the times measured running the
    OpenProdoc core, the database and the repository with
    document of different sizes.
   The delete operations affect only to the metadata and
    therefore the speed is similar, with normal statistics
    variations.
   The purge operations (with file system repository) also
    have little relation with the file size.
   The insert and download operations show a decrease of
    speed with the file size, but without an apparent
    coefficient. Probably the execution of the sets of tests
    was affected by the garbage collector in the database
    server (Java alone) creating the “steps” in the data.
   Repeating the group of test, appeared also some “steps”
    but in different places.                                 25
Results and Graphs. Repositories (I)
           Test managing 2 threads, 4.000 docs of 100k in two repositories
2.500.000




2.000.000




1.500.000

                                                                                                 FS
                                                                                                 Blob
1.000.000




 500.000




                      Ins/h                Down/h                 Del/h                Purge/h



                                 Ins/h              Down/h         Del/h          Purge/h
               FS                   800.000           1.309.091       2.400.000      1.440.000
               Blob                      24.870         33.488        1.028.571        34.286

                                                                                                 26
Results and Graphs. Repositories (II)
 The graph shows the times measured running the
  OpenProdoc core, the database and two repositories, a
  file system and a database Blob.
 The speed with Blob is very low compared with the file
  system speed.
 Even the delete speed, that doesn’t affect the actual
  storage is slower, probably by the general overload of the
  database.
 The speed of blob storage can change a lot between
  different databases due to its different implementation.
 Anyway, 25.000 docs/hour is enough for many systems.
  Some scenarios with small documents (icons, SMS, Twitter
  messages, IM messages, email, etc.) can be a use case.

                                                         27
Results and Graphs. Java Jvm (I)
   Jvm monitor. Test of 10 series managing from 4.000 to 40.000 docs of 200k




                                                                                28
Results and Graphs. Java Jvm (II)
 The JVM contains the test program, the OpenProdoc
  Core and the HSQLDB client, so the numbers contain
  added values (in Class number, threads, heap, etc.) from
  both elements.
 This would show what the overhead of embedding
  OpenProdoc with the HSQLDB client would be for an
  application.
 Every set of tests can be observed by the peaks in CPU
  use (due to creating threads) and in the total number of
  threads.
 The heap is always under 256 M and has a sudden drop
  when de garbage collector starts.
 In this set of tests, 220.000 documents of 200k were
  inserted, downloaded and deleted.
                                                         29
Analysis and Conclusions (I)
   The objectives of the test where:
    ◦ To check the behaviour of OpenProdoc under stress conditions,
      detecting potential problems.
    ◦ To measure the speed to manage documents
    ◦ To detect the influence of different factors in the performance of
      OpenProdoc.
 Regarding the first point, the stability, resource
  utilization and overall functioning has been correct. The
  tests discovered a potential error in date metadata for
  high concurrence scenarios that has been corrected
  after the first set of test.
 The concurrency obtained with the test program is
  similar to a standard use of hundreds or thousands of
  users.
                                                                       30
Analysis and Conclusions (II)
   Regarding to speed, the obtained processing speed is
    high, especially considering that OpenProdoc is a
    document management system fully functional, with
    permissions for each document (not only document
    type or folder), user permissions, integrity and
    transaction management.
   The influence of the different factors is more or less the
    expected, knowing the internal model and design of
    OpenProdoc, but after the tests there is a model that
    allows a more realistic estimation.
   Perhaps the differences in performance between
    databases is striking, but probably, modifying the default
    configuration the differences can be reduced.

                                                             31
Using OpenProdoc (I)
 The recommended infrastructure for using
  OpenProdoc will be determined by different criteria.
 The tests show that even with a small infrastructure is
  possible to obtain a high throughput, so the
  performance isn’t is the main factor.
 Using it embedded in an application or with its own
  Web Client there are no big requirements, so the
  decision will be determined mainly by company
  standards (O.S., Database, etc.), security criteria and
  architecture requirements (High Availability, scale up,
  scale out, etc.).
 A minimum configuration can be a computer with O.S.
  Linux 64 bits 8G Ram with the functionality of database
  server (HSQLDB o MySQL), repository (file system)
  and application server (Tomcat o Glassfish).
                                                        32
Using OpenProdoc (II)
   A more standard configuration, sharing all the servers
    with other applications and services, would be:


 Database Server


                                         J2EE server:
                                  OpenProdoc core / Web Client




File Server / NAS




                                                                 33
Using OpenProdoc (III)
   Finally, a Enterprise solution can be similar to:



 Database Server Cluster


                                          J2EE servers farm:
                                     OpenProdoc core / Web Client




File Server / NAS - RAID N




                                                                    34
More Information



•   http://code.google.com/p/openprodoc/


• Joaquin Hierro
• openprodoc@gmail.com




                                           35

More Related Content

What's hot

Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...Tobias Schneck
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPStéphanie Roger
 
開放運算&GPU技術研究班
開放運算&GPU技術研究班開放運算&GPU技術研究班
開放運算&GPU技術研究班Paul Chao
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Rémi Jullian
 
大型App面臨的挑戰
大型App面臨的挑戰大型App面臨的挑戰
大型App面臨的挑戰Chih-Chung Lee
 
Advanced Blockchain Technologies on Privacy and Scalability
Advanced Blockchain Technologies on Privacy and ScalabilityAdvanced Blockchain Technologies on Privacy and Scalability
Advanced Blockchain Technologies on Privacy and ScalabilityAll Things Open
 
Distro Recipes 2013 : Debian and quality assurance
Distro Recipes 2013 : Debian and quality assuranceDistro Recipes 2013 : Debian and quality assurance
Distro Recipes 2013 : Debian and quality assuranceAnne Nicolas
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAlex Matrosov
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
Kernel Recipes 2013 - Kernel for your device
Kernel Recipes 2013 - Kernel for your deviceKernel Recipes 2013 - Kernel for your device
Kernel Recipes 2013 - Kernel for your deviceAnne Nicolas
 
Evoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationEvoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationImesh Gunaratne
 
Distro Recipes 2013 : Make Debian and compiler agnostic
Distro Recipes 2013 : Make Debian and  compiler agnostic Distro Recipes 2013 : Make Debian and  compiler agnostic
Distro Recipes 2013 : Make Debian and compiler agnostic Anne Nicolas
 
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)NTT DATA Technology & Innovation
 
ASP.NET Difference FAQs
ASP.NET Difference FAQsASP.NET Difference FAQs
ASP.NET Difference FAQsUmar Ali
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionJérôme Petazzoni
 
Object Oriented Code RE with HexraysCodeXplorer
Object Oriented Code RE with HexraysCodeXplorerObject Oriented Code RE with HexraysCodeXplorer
Object Oriented Code RE with HexraysCodeXplorerAlex Matrosov
 

What's hot (16)

Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
 
開放運算&GPU技術研究班
開放運算&GPU技術研究班開放運算&GPU技術研究班
開放運算&GPU技術研究班
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)
 
大型App面臨的挑戰
大型App面臨的挑戰大型App面臨的挑戰
大型App面臨的挑戰
 
Advanced Blockchain Technologies on Privacy and Scalability
Advanced Blockchain Technologies on Privacy and ScalabilityAdvanced Blockchain Technologies on Privacy and Scalability
Advanced Blockchain Technologies on Privacy and Scalability
 
Distro Recipes 2013 : Debian and quality assurance
Distro Recipes 2013 : Debian and quality assuranceDistro Recipes 2013 : Debian and quality assurance
Distro Recipes 2013 : Debian and quality assurance
 
Advanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/GapzAdvanced Evasion Techniques by Win32/Gapz
Advanced Evasion Techniques by Win32/Gapz
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
Kernel Recipes 2013 - Kernel for your device
Kernel Recipes 2013 - Kernel for your deviceKernel Recipes 2013 - Kernel for your device
Kernel Recipes 2013 - Kernel for your device
 
Evoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationEvoluation of Linux Container Virtualization
Evoluation of Linux Container Virtualization
 
Distro Recipes 2013 : Make Debian and compiler agnostic
Distro Recipes 2013 : Make Debian and  compiler agnostic Distro Recipes 2013 : Make Debian and  compiler agnostic
Distro Recipes 2013 : Make Debian and compiler agnostic
 
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
 
ASP.NET Difference FAQs
ASP.NET Difference FAQsASP.NET Difference FAQs
ASP.NET Difference FAQs
 
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special EditionIntroduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
Introduction to Docker, December 2014 "Tour de France" Bordeaux Special Edition
 
Object Oriented Code RE with HexraysCodeXplorer
Object Oriented Code RE with HexraysCodeXplorerObject Oriented Code RE with HexraysCodeXplorer
Object Oriented Code RE with HexraysCodeXplorer
 

Viewers also liked

Праздничный емейл-маркетинг: самые выгодные поздравления
Праздничный емейл-маркетинг: самые выгодные поздравления Праздничный емейл-маркетинг: самые выгодные поздравления
Праздничный емейл-маркетинг: самые выгодные поздравления EMAILMATRIX
 
Sm qcouleurmaquettequark2015 n°32 def imprim 2015
Sm qcouleurmaquettequark2015 n°32 def imprim 2015Sm qcouleurmaquettequark2015 n°32 def imprim 2015
Sm qcouleurmaquettequark2015 n°32 def imprim 2015lesaintmarcquoi
 
Красивый контент для бизнеса
Красивый контент для бизнесаКрасивый контент для бизнеса
Красивый контент для бизнесаЕлена Назарова
 
Схема Яценюка-Мартиненка на урані
Схема Яценюка-Мартиненка на ураніСхема Яценюка-Мартиненка на урані
Схема Яценюка-Мартиненка на ураніDmytro Stefurak
 
เฟียเจท์ 1
เฟียเจท์ 1เฟียเจท์ 1
เฟียเจท์ 1suweeda
 
Marknadsföring i sociala medier
Marknadsföring i sociala medierMarknadsföring i sociala medier
Marknadsföring i sociala medierLeif Kajrup
 
Txertaketen eskuliburua
Txertaketen eskuliburuaTxertaketen eskuliburua
Txertaketen eskuliburuaIrekia - EJGV
 

Viewers also liked (9)

Праздничный емейл-маркетинг: самые выгодные поздравления
Праздничный емейл-маркетинг: самые выгодные поздравления Праздничный емейл-маркетинг: самые выгодные поздравления
Праздничный емейл-маркетинг: самые выгодные поздравления
 
UCCHS summary
UCCHS summaryUCCHS summary
UCCHS summary
 
Presentación Wilfried Bilbao
Presentación Wilfried BilbaoPresentación Wilfried Bilbao
Presentación Wilfried Bilbao
 
Sm qcouleurmaquettequark2015 n°32 def imprim 2015
Sm qcouleurmaquettequark2015 n°32 def imprim 2015Sm qcouleurmaquettequark2015 n°32 def imprim 2015
Sm qcouleurmaquettequark2015 n°32 def imprim 2015
 
Красивый контент для бизнеса
Красивый контент для бизнесаКрасивый контент для бизнеса
Красивый контент для бизнеса
 
Схема Яценюка-Мартиненка на урані
Схема Яценюка-Мартиненка на ураніСхема Яценюка-Мартиненка на урані
Схема Яценюка-Мартиненка на урані
 
เฟียเจท์ 1
เฟียเจท์ 1เฟียเจท์ 1
เฟียเจท์ 1
 
Marknadsföring i sociala medier
Marknadsföring i sociala medierMarknadsföring i sociala medier
Marknadsföring i sociala medier
 
Txertaketen eskuliburua
Txertaketen eskuliburuaTxertaketen eskuliburua
Txertaketen eskuliburua
 

Similar to OpenProdoc 0.8 Load Tests

OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overviewjhierrot
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application developmentshelloidhq
 
Resilience Testing
Resilience Testing Resilience Testing
Resilience Testing Ran Levy
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopJamie Coleman
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test toolsAllan Huang
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Simon Storm
 
0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorialKlausePaulino
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouJ On The Beach
 
From CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIFrom CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIDenis Izmaylov
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Sauce Labs
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline Docker, Inc.
 
Dockerizing Aurea - Docker Con EU 2017
Dockerizing Aurea - Docker Con EU 2017Dockerizing Aurea - Docker Con EU 2017
Dockerizing Aurea - Docker Con EU 2017Matias Lespiau
 
A Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsA Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsSalman Baset
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleRobert Reiz
 
Synopsis on online shopping by sudeep singh
Synopsis on online shopping by  sudeep singhSynopsis on online shopping by  sudeep singh
Synopsis on online shopping by sudeep singhSudeep Singh
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 

Similar to OpenProdoc 0.8 Load Tests (20)

OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overview
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application development
 
Resilience Testing
Resilience Testing Resilience Testing
Resilience Testing
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshop
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
Nodejs
NodejsNodejs
Nodejs
 
From CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIFrom CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CI
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Techzone 2014 presentation rundeck
Techzone 2014 presentation rundeckTechzone 2014 presentation rundeck
Techzone 2014 presentation rundeck
 
Dockerizing Aurea - Docker Con EU 2017
Dockerizing Aurea - Docker Con EU 2017Dockerizing Aurea - Docker Con EU 2017
Dockerizing Aurea - Docker Con EU 2017
 
Docker How and Why
Docker How and WhyDocker How and Why
Docker How and Why
 
A Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsA Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container Platforms
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & Ansible
 
Synopsis on online shopping by sudeep singh
Synopsis on online shopping by  sudeep singhSynopsis on online shopping by  sudeep singh
Synopsis on online shopping by sudeep singh
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

OpenProdoc 0.8 Load Tests

  • 1. OpenProdoc Benchmarking the ECM OpenProdoc v 0.8. Managing more than 200.000 documents/hour in a SOHO installation. February 2013 1
  • 2. Index  Introduction  Objectives  Description of OpenProdoc  Test Criteria  Infrastructure  Realization of the Test  Results and Graphs  Analysis and Conclusions  Using OpenProdoc 2
  • 3. Introduction  OpenProdoc is an Open Source ECM Document Manager developed in Java.  This document describes different Load Tests performed over several days with OpenProdoc v 0.8.  The objective of the tests was to measure the behavior of OpenProdoc in different scenarios and to measure the speed that can be obtained with a small infrastructure that can be used even by the smallest organization.  The tests were run using a program developed for the tests. It’s known the expression “Lies, big lies and statistics”, so the source and a “test kit” are available with the version 0.8 program. With the kit it’s possible to run the test in your environ and compare the results. 3
  • 4. Objectives  The tests were defined with three objectives: ◦ To check the behaviour of OpenProdoc under stress conditions, detecting potential problems. ◦ To measure the speed to manage documents ◦ To detect the influence of different factors in the performance of OpenProdoc.  It wasn't objective of the tests finding the database nor the O.S. that works best with OpenProdoc.  There are too many elements that can affect the behavior of any product, so it was elected to limit to a manageable number of significant factors.  For automating the test was developed a program that allows to execute different sets of tests and measure results. 4
  • 5. Description of OpenProdoc (I)  To better understand the elements to be measured and the influence of different factors, it is first necessary to briefly explain the architecture of OpenProdoc.  The heart of OpenProdoc is its core. The core manages all the logic and functionality of the product.  The core include “connectors” for managing all its functionality. There are different connectors for each functionality (Metadata management, Document’s repositories, Authentication) and it’s possible to develop and include new connectors of each class.  The core itself is very small (<1M) so can be embedded in any application. The Swing and Web clients of OpenProdoc embed the core, and any application (J2EE or not) can embed also the core. 5
  • 6. Description of OpenProdoc (II) DD.BB. Metadata Metadata Connector Repository DD.BB. Blob Connector Documents Repository Connector Filesystem Core Authentication Connector Ldap Authentication Connector DD.BB. Authentication 6
  • 7. Description of OpenProdoc (III) Java Application (Swing / thick client) OPD Core BB.DD. DD.BB. Metadato Metadata J2EE Application OPD Core Filesystem J2EE Web Client OpenProdoc Filesystem OPD Core OPD Core Connector MD OPD Under Development 7
  • 8. Test Criteria (I)  The test is based in a simple program developed for the test, not in the OpenProdoc clients. There are several reasons for this election: ◦ The Swing client is not valid due its single user/thread nature. ◦ A test with the Web client deployed in any J2EE application server mixes the J2EE server performance, the simulated “browser” performance and the OpenProdoc Engine performance. ◦ Additionally, the use of ajax distorts this kind of test. ◦ The OpenProdoc core can be embedded in any application.  So the solution selected is to test the OpenProdoc core with a multithread development.  This shows the OPD raw performance and makes very easy to test different combinations and also to reproduce the tests in any environ and installation. 8
  • 9. Test Criteria (II)  Additionally, many ECM products include some kind of “Bulk Loader”.  When a project requires to load thousands or hundreds of thousands of documents every day, it’s unusual to use the standard client. A Scanning capture system, a massive loader, some kind of development or EAI is used.  In OpenProdoc, the API used in the Load Test is the standard API, not a program using some “backdoor access”. So this is the performance that any development or integration can obtain.  Therefore, the tests measure the speed and the influence of different factors in the performance of the OpenProdoc core. 9
  • 10. Test Criteria (III)  What are the factors studied? 1. Running the core and the server in the same machine or different machines. 2. Different number of threads. 3. Document types of different complexity. 4. Different size of documents. 5. Different database servers. 6. Different kind of repositories  In every test, it’s measured the speed of four common operations over documents: ◦ Insert ◦ Download ◦ Delete ◦ Purge  Also it’s monitored the JVM running the OpenProdoc core to show the load over the computer. 10
  • 11. Test Criteria (IV)  The test were intended to be repeatable and “real”, no a “laboratory test”, so: ◦ The databases used are two Open Source Databases:  HSQLDB (used in the portable version of OpenProdoc)  MySQL (Widely used in many projects) ◦ The databases are used “out-of-the-box”, without any fine- tuning. ◦ The computers are desktop and portable PC with very standard specifications, no dedicated servers. ◦ The Lan is connected using a home ADSL router. 11
  • 12. Infrastructure (I)  Test series with 1 PC:  PC 1: ◦ OS: Linux Mint 14. kernel 3.5 32 bits ◦ CPU: AMD Phenom II X4 955. 4 nucleus 1.6 GHz ◦ RAM: 4 G. ◦ Disc: 500G SATA ◦ Java 1.6.0.22  Functions: ◦ Database server (HSQLDB 2.2.8, MySQL 5.5.29) ◦ Repository server (File System) ◦ Test-OpenProdoc run (OpenProdoc 0.8) 12
  • 13. Infrastructure (II)  Test series with 3 PC:  PC 1: ◦ OS: Linux Mint 14. kernel 3.5 32 bits ◦ CPU: AMD Phenom II X4 955. 4 nucleus 1.6 GHz ◦ RAM: 4 G, Disc: 500G SATA ◦ Java: 1.6.0.22 ◦ Function: Database server (HSQLDB 2.2.8)  PC 2: ◦ OS: Windows 7 Profesional 32bits ◦ CPU: Intel Centrino Core Duo T7500 2 nucleus 2.2GHz ◦ RAM: 3 G, Disc: 200G ◦ Function: Repository server (FileSystem)  PC 3: ◦ OS: Windows 7 Enterprise 32bits ◦ CPU: Intel Core i5. 4 nucleus 2.4GHz ◦ RAM: 4 G, Disc: 250G ◦ Java: 1.6.0.22 ◦ Function: Test-OpenProdoc run (OpenProdoc 0.8) 13
  • 14. Infrastructure (III)  Test series with 3 PC: PC 1: Database Server PC 3: Test / OpenProdoc Core PC 2: File Server (*) * It was intended to use a (home) NAS disk as File server, but the measures showed a very low speed. (x4 slower than PC 2). Some Internet investigations showed that the family of disk has some speed problems, so the test results were discarded. 14
  • 15. Realization of the Test  The program developed for the test, executes the instructions: ◦ Reads the configuration file, that details the document to be inserted, the number of threads, the number of documents to be used and the document type. ◦ Creates local copies of the source documents, so that they are inserted from different files and not always from the same file in cache. ◦ Creates a folder in OpenProdoc for storing the folders and documents of the tests. ◦ For every set of tests:  Starts the specified number of threads for insertion.  Measures the time from the start of the first thread to the end of the last thread.  Repeats the process for download threads, delete threads and purge threads.  Saves the measured data  Deletes the downloaded documents ◦ Deletes the local copies of the document used for insertion. 15
  • 16. Results and Graphs. Local Tests (I)  Test managing from 1 to 30 threads, 2.000 to 60.000 docs of 100k 3.000.000 2.500.000 2.000.000 Docs.Ins/h 1.500.000 Docs.Down/h Docs.Del/h Docs.Purge/h 1.000.000 500.000 0 5 10 15 20 25 30 16
  • 17. Results and Graphs. Local Tests (II)  The graph shows the times measured running the OpenProdoc core, the database and the repository in one computer.  The maximum number of documents inserted (878.000 docs/h) is obtained using 5 threads.  The Download, Purge and Delete functions decrease with the number of threads, but even with 30 threads, the purge and delete rate is around 100.000 docs/h.  This configuration has the advantage of avoiding communications, but the disk and CPU have a higher load. 17
  • 18. Results and Graphs. Doc. Type (I)  Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two types 3.000.000 2.500.000 2.000.000 Ins DocBasic/h 1.500.000 Ins DocComp/h Del DocBasic/h Del DocComp/h 1.000.000 500.000 0 1 2 3 4 5 6 7 8 9 10 18
  • 19. Results and Graphs. Doc. Type (II)  The graph shows the times measured running the OpenProdoc core, the database and the repository in one computer with two document types, the basic type and a compound type, subtype of the first one.  The document types in OpenProdoc are structured as related tables, so when the hierarchy level grows, the operations affect to more tables and are slower.  The insertion speed is very similar because the time is used mainly in the upload and storing of the file in the repository.  Operations as delete or queries are slower for complex types because internally OpenProdoc needs to access more tables. 19
  • 20. Results and Graphs. HSQLDB vs MySQL (I)  Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two DD.BB. 3.000.000 2.500.000 2.000.000 Ins DocHSQLDB/h 1.500.000 Ins DocMySQL/h Del DocHSQLDB/h Del DocMySQL/h 1.000.000 500.000 0 1 2 3 4 5 6 7 8 9 10 20
  • 21. Results and Graphs. HSQLDB vs MySQL (I)  The graph shows the times measured running the OpenProdoc core, the database and the repository in one computer with different database servers.  With the default configuration, the performance obtained with HSQLDB is better than with MySQL, not only in operation with documents management but in operations with metadata management (the Delete only moves documents to the trash bin, without actually deleting the file, that is eliminated with the Purge).  MySQL maintains the performance when increasing the number of threads, however HSQLDB decreases the performance, although is always better than MySQL.  Of course, with fine tuning of the databases, the values probably can change, but it’s out of the scope of this tests. 21
  • 22. Results and Graphs. Local vs Remote (I)  Test managing from 1 to 10 threads, 2.000 to 20.000 docs of 100k in two architectures 2.500.000 2.000.000 L.Ins/h 1.500.000 L.Down/h L.Del/h L.Purge/h R.Ins/h 1.000.000 R.Down/h R.Del/h R.Purge/h 500.000 1 2 3 4 5 6 7 8 9 10 22
  • 23. Results and Graphs. Local vs Remote (I)  The graph shows the times measured running the OpenProdoc core, the database and the repository in one computer (local) or in three different computers.  In general, the speed when all the elements are in the same computer is around 4 times the speed with the elements distributed in different computers.  The only exception is the delete function due that is related only to database and not to repository/filesystem.  This shows that a fast filesystem is the key to improve the performance with this architecture.  Anyway, the insert speed is 200.000 docs/h, the download speed is 348.000 docs/h and the purge speed is 300.000 docs/h, enough throughput for most of the installations. 23
  • 24. Results and Graphs. Document Size (I)  Test managing from 1 to 5 threads, 2.000 to 10.000 docs of 100k, 200k, 300k and 400k 1.600.000 1.400.000 1.200.000 100.Ins/h 1.000.000 100.Down/h 200.Ins/h 800.000 200.Down/h 300.Ins/h 300.Down/h 600.000 400.Ins/h 400.Down/h 400.000 200.000 1 1,5 2 2,5 3 3,5 4 4,5 5 24
  • 25. Results and Graphs. Document Size (II)  The graph shows the times measured running the OpenProdoc core, the database and the repository with document of different sizes.  The delete operations affect only to the metadata and therefore the speed is similar, with normal statistics variations.  The purge operations (with file system repository) also have little relation with the file size.  The insert and download operations show a decrease of speed with the file size, but without an apparent coefficient. Probably the execution of the sets of tests was affected by the garbage collector in the database server (Java alone) creating the “steps” in the data.  Repeating the group of test, appeared also some “steps” but in different places. 25
  • 26. Results and Graphs. Repositories (I)  Test managing 2 threads, 4.000 docs of 100k in two repositories 2.500.000 2.000.000 1.500.000 FS Blob 1.000.000 500.000 Ins/h Down/h Del/h Purge/h Ins/h Down/h Del/h Purge/h FS 800.000 1.309.091 2.400.000 1.440.000 Blob 24.870 33.488 1.028.571 34.286 26
  • 27. Results and Graphs. Repositories (II)  The graph shows the times measured running the OpenProdoc core, the database and two repositories, a file system and a database Blob.  The speed with Blob is very low compared with the file system speed.  Even the delete speed, that doesn’t affect the actual storage is slower, probably by the general overload of the database.  The speed of blob storage can change a lot between different databases due to its different implementation.  Anyway, 25.000 docs/hour is enough for many systems. Some scenarios with small documents (icons, SMS, Twitter messages, IM messages, email, etc.) can be a use case. 27
  • 28. Results and Graphs. Java Jvm (I)  Jvm monitor. Test of 10 series managing from 4.000 to 40.000 docs of 200k 28
  • 29. Results and Graphs. Java Jvm (II)  The JVM contains the test program, the OpenProdoc Core and the HSQLDB client, so the numbers contain added values (in Class number, threads, heap, etc.) from both elements.  This would show what the overhead of embedding OpenProdoc with the HSQLDB client would be for an application.  Every set of tests can be observed by the peaks in CPU use (due to creating threads) and in the total number of threads.  The heap is always under 256 M and has a sudden drop when de garbage collector starts.  In this set of tests, 220.000 documents of 200k were inserted, downloaded and deleted. 29
  • 30. Analysis and Conclusions (I)  The objectives of the test where: ◦ To check the behaviour of OpenProdoc under stress conditions, detecting potential problems. ◦ To measure the speed to manage documents ◦ To detect the influence of different factors in the performance of OpenProdoc.  Regarding the first point, the stability, resource utilization and overall functioning has been correct. The tests discovered a potential error in date metadata for high concurrence scenarios that has been corrected after the first set of test.  The concurrency obtained with the test program is similar to a standard use of hundreds or thousands of users. 30
  • 31. Analysis and Conclusions (II)  Regarding to speed, the obtained processing speed is high, especially considering that OpenProdoc is a document management system fully functional, with permissions for each document (not only document type or folder), user permissions, integrity and transaction management.  The influence of the different factors is more or less the expected, knowing the internal model and design of OpenProdoc, but after the tests there is a model that allows a more realistic estimation.  Perhaps the differences in performance between databases is striking, but probably, modifying the default configuration the differences can be reduced. 31
  • 32. Using OpenProdoc (I)  The recommended infrastructure for using OpenProdoc will be determined by different criteria.  The tests show that even with a small infrastructure is possible to obtain a high throughput, so the performance isn’t is the main factor.  Using it embedded in an application or with its own Web Client there are no big requirements, so the decision will be determined mainly by company standards (O.S., Database, etc.), security criteria and architecture requirements (High Availability, scale up, scale out, etc.).  A minimum configuration can be a computer with O.S. Linux 64 bits 8G Ram with the functionality of database server (HSQLDB o MySQL), repository (file system) and application server (Tomcat o Glassfish). 32
  • 33. Using OpenProdoc (II)  A more standard configuration, sharing all the servers with other applications and services, would be: Database Server J2EE server: OpenProdoc core / Web Client File Server / NAS 33
  • 34. Using OpenProdoc (III)  Finally, a Enterprise solution can be similar to: Database Server Cluster J2EE servers farm: OpenProdoc core / Web Client File Server / NAS - RAID N 34
  • 35. More Information • http://code.google.com/p/openprodoc/ • Joaquin Hierro • openprodoc@gmail.com 35