Hi Ritu, I'm afraid I can't share my code as I work in a closed source project...
Please read between the lines: On 1 Apr 2004 at 13:02, Ritu Kedia wrote: > Hi Andreas, > > Could you please share the performance enhancements that you mentioned > below? Are those enhancements generic enough to be incorporated in Slide > 2.0? What I did is not as generic as it should be to be incorporated into the Slide product. Besides I had to change a pre-beta version with the old database schema. > > Also it would be great if you could provide more details of your > configuration in which you have 150,000 up documents? This is hard to answer. I test on a virtual Windows server on normal P4 work station machine. Windows got 700 MB RAM. I think Tomcat got 256 or 500 MB RAM - but I'm not sure in this very moment. Slide has to share it with two other complex web-apps. The database runs on MS SQL 2000. > More specifically I am looking at the following: > Which Slide APIs are you using (Server, Client, WVCM)? HTTP PUT from the client side. > What is the end to end configuration? (for e.g. DesktopClient --> WebServer > --> J2EE App Server --> Servlet --> EJB --> SlideServerAPI --> J2EEStore for > Metadata + FileStore for Content) Java-Client during tests ---WebDAV--> Apache/Tomcat --> RDBMS/Custom Content Repository. > Is slide authorization turned on or off? on, but currently I'm just using a single user. So far it is only planned as a single-user scenario. The single user is another software system. > What store are you using for Metadata? custom jdbc > What store are you using for Content? custom document management system > What is the average size of the documents? for tests I used 10 bytes, but in real life it will be normal business documents. > What is the average depth of top most collection under /files? /files/test1, /files/test2 and so on > What is the peak load (no. of concurrent users)? So far I did single-threaded single-client tests to easier measure the performance. It's so slow there is no need to put more load onto it. > Does your client do download of complete top level folders (recursive > download of all files in all sub-folders)? if yes, approximately how long > does it take for a top level folder with 1000 documents each being of approx > .5 MB? As our performance problem has been putting and deleting MANY documents so far, I tested just put and delete. With the change to load children only on demand, PUT became a lot faster. However, browsing a collection won't be faster, because the children have to be loaded then. I think it does not matter, what size the children are. The most run-time is consumed in reading the information from the children table and instancing a SubjectNode for each child. Of course size does matter when downloading the files. I hope this helps. Unfortunately I cannot give more information about the project. Andreas > > > Does Slide has test scripts for load tests? OR Has anyone written their own > test scripts to do the same? > > Regards, > Ritu > > > > > -----Original Message----- > > From: Andreas Probst [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, March 30, 2004 11:11 PM > > To: Slide Users Mailing List > > Subject: RE: Which API should I use for a web app? > > > > > > On 30 Mar 2004 at 16:26, [EMAIL PROTECTED] wrote: > > > > > >>If you use the slide API for storing data from your app, > > take into > > > >>account that it is reallly complicated to store content > > in a way that > > > >>you can use the versioning stuff, because all of the > > versioning is done > > > in the webdav layer. > > > > > > What do you mean ? The slide API can manage > > NodeRevisionDescriptors and > > > NodeRevisionDescriptor. > > > It is not what you expect to do ? or are you speaking about > > other features ? > > > > > > >>For fast content retrieval in the same vm, slide > > > >>API might be a good choice. > > > > > > I'm using the Slide API from a Jetspeed service and its > > works fine. We have > > > -/+ 20.000 documents and no problem at all. > > > Maybe, if we have more and more documents, this solution will not be > > > scalable. So, next plan is to access to different > > "external" repositories > > > via the webdav client. > > > > Hi Christophe, > > > > there are major performance issues in the Slide kernel and > > database layer. > > > > 1. A collection SubjectNode always knows about all its children. > > With increasing collections the time to retrieve a collection > > SubjectNode will increase. Apart from this all children > > SubjectNodes are instanced to prepare the binding information. > > > > Solution would be to load the information about the children > > only on demand. To do this, the SubjectNode needs a pointer to > > the right NodeStore, which in turn needs some new methods. I > > implemented this with sub-classing the SubjectNode, which had > > been made more complicated than necessary with some private > > members and methods in ObjectNode :-( Of course some WebDAV > > methods need adaption to use the custom SubjectNode. > > > > 2. When adding a new child to a collection resource, all the old > > child entries of the collection resource are deleted, just to be > > saved again afterwards together with the information about the > > new child. The same is true for removing children. > > > > Solution would be to enhance the NodeStore interface with > > methods such as addChild and removeChild or so. Of course > > StructureImpl needs to be adapted too. > > > > Having done these two enhancements, I can tell you the > > performance has increased dramatically, especially when talking > > about many documents (>1000). Nevertheless, the old database > > schema with "slow" datatypes (CLOB), which I had to use when > > doing the changes, prevents the usage of Slide with really many > > documents: On a server with 150,000 documents (70,000 in one > > collection) a put of a new document still needs a few seconds -- > > and unfortunately is rising with every new document. Maybe the > > new database schema is much better in this regard, but the two > > problems above remain. > > > > Regards, > > > > Andreas > > > > > > > > Christophe > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]