Hello,

> Query fewer objects from the database. Make sure you don't store lots
> of tiny persistent objects in the database, I'd aim for storing data
> in chunks of 8-32kb or use blobs for larger objects. Remember that
> ZODB is a key/value storage for the most part. Model your data
> accordingly.

That's hard to do for a project that is already 8 or 9 years old, as you
can see in the attached file, we've got have many cases that fall
outside your limits. I've noticed, for instance, that pages that involve
the loading of >200 MaKaC.review.Abstract objects have an awful
performance record (maybe because we then load for each object a handful
of other referenced persitent objects).

> Before you do that, you might consider switching to RelStorage, which
> already has a memcached caching layer in addition to the connection
> caches.

But isn't RelStorage supposed be slower than FileStorage/ZEO?

> But remember that throwing more caches at the problem isn't a
> solution. It's likely the way you store or query the data from the
> database that's not optimal.

I agree, many things could be improved regarding the data structures we
use. However, it is also true that we have a large number of objects
that are rarely changed, and that there is no need to fetch from the DB
if we can keep them in memory.

> The ZEO server needs almost no CPU power, except for garbage
> collection and packing. During normal operations the CPU speed should
> be irrelevant.

Yes, it is consistent with our load average history. It slightly
increases during DB packing, but otherwise stays around 1.

Thanks a lot for your answers.

Cheers,

Pedro

-- 
José Pedro Ferreira

Software Developer, Indico Project
http://indico-software.org

+-----------+
+  '``'--- `+  CERN - European Organization for Nuclear Research
+ |CERN|  / +  1211 Geneve 23, Switzerland
+ ..__. \.  +  IT-UDS-AVC
+  \\___.\  +  Office: 513-R-0042
+      /    +  Tel. +41227677159
+-----------+
Module.ClassName                                         Percentage             
Min             Max            Size       Instances
______________________________________________________________________________________________________________________________________
MaKaC.webinterface.displayMgr.SystemLink           |   13.7365089336% |         
 165B |          551B |      1753.1Mb |       7108834
MaKaC.conference.Contribution                      |   7.33041346279% |         
 954B |        12.4Kb |       935.5Mb |        719579
MaKaC.accessControl.AccessController               |   5.33470736765% |         
 159B |         1.7Kb |       680.8Mb |       2699638
MaKaC.conference.Conference                        |   4.28939314997% |         
1.7Kb |        75.6Kb |       547.4Mb |        165507
MaKaC.common.log.ActionLogItem                     |   4.17241315243% |         
 215B |         9.9Kb |       532.5Mb |       1298923
BTrees.OOBTree.OOBucket                            |   3.35268430987% |         
  51B |         1.2Mb |       427.9Mb |        237004
MaKaC.common.Counter.Counter                       |   3.23618867689% |         
  59B |           70B |       413.0Mb |       7339189
MaKaC.conference.LocalFile                         |   2.95354653864% |         
 337B |         7.7Kb |       376.9Mb |        994222
MaKaC.registration.PersonalDataFormItem            |   1.99248960658% |         
 116B |          162B |       254.3Mb |       1951216
MaKaC.conference.ContributionParticipation         |   1.52190679944% |         
 184B |         1.9Kb |       194.2Mb |        739925
MaKaC.common.indexes.EmailIndex                    |   1.36666809146% |         
2.1Mb |         2.1Mb |       174.4Mb |            92
MaKaC.registration.RegistrationForm                |   1.30462205201% |         
 824B |         6.1Kb |       166.5Mb |        162642
MaKaC.conference.Slides                            |   1.13426433984% |         
 291B |         1.8Kb |       144.8Mb |        386587
persistent.mapping.PersistentMapping               |   1.12364719117% |         
  57B |        12.4Kb |       143.4Mb |        847891
MaKaC.review.AbstractMgr                           |   1.10508750233% |         
 729B |         6.6Kb |       141.0Mb |        162620
MaKaC.conference.ContribStatusSch                  |  0.903904932477% |         
 170B |          195B |       115.4Mb |        648183
MaKaC.common.log.EmailLogItem                      |  0.898982684087% |         
 295B |        16.0Kb |       114.7Mb |         75793
MaKaC.contributionReviewing.Review                 |  0.887749184867% |         
 453B |          453B |       113.3Mb |        262267
MaKaC.conference.ReportNumberHolder                |  0.878300608667% |         
 117B |          251B |       112.1Mb |        984754
MaKaC.registration.AccommodationType               |  0.876478211284% |         
 142B |          438B |       111.9Mb |        488509
MaKaC.schedule.ContribSchEntry                     |  0.873561973452% |         
 165B |          228B |       111.5Mb |        558052
MaKaC.webinterface.displayMgr.Menu                 |  0.866853068433% |         
 357B |         1.3Kb |       110.6Mb |        190541
MaKaC.conference.Session                           |  0.809584603165% |         
 894B |        16.6Kb |       103.3Mb |         83969
MaKaC.registration.MiscellaneousInfoSimpleItem     |   0.79980971978% |         
 216B |        12.8Kb |       102.1Mb |        315249
MaKaC.user.TimedLinkedEvents                       |  0.747063696646% |         
  80B |       835.8Kb |        95.3Mb |         16930
[..]binterface.session.sessionManagement.PSession  |  0.708889402539% |         
 299B |          364B |        90.5Mb |        299841
persistent.list.PersistentList                     |  0.665464072002% |         
  51B |         2.3Kb |        84.9Mb |       1247969
MaKaC.common.indexes.SurNameIndex                  |  0.658604230855% |         
1.1Mb |         1.1Mb |        84.1Mb |            88
MaKaC.conference.Material                          |  0.658030032432% |         
 286B |         4.5Kb |        84.0Mb |        216740
BTrees._OOBTree.OOBTree                            |  0.603115061848% |         
  30B |        11.1Kb |        77.0Mb |       1353388
MaKaC.registration.SocialEventForm                 |  0.578302795899% |         
 254B |         1.6Kb |        73.8Mb |        162620
MaKaC.webinterface.displayMgr.ConfDisplayMgr       |  0.556053343056% |         
 257B |          665B |        71.0Mb |        162000
MaKaC.user.Avatar                                  |  0.540621497042% |         
 306B |       442.2Kb |        69.0Mb |         47783
MaKaC.contributionReviewing.ReviewManager          |  0.535484012045% |         
 273B |          316B |        68.3Mb |        262267
MaKaC.common.indexes.OrganisationIndex             |   0.51419663037% |       
919.8Kb |       921.5Kb |        65.6Mb |            82
MaKaC.conference.SubContribution                   |  0.512961328868% |         
 391B |        20.6Kb |        65.5Mb |        106606
MaKaC.reviewing.ConferenceReview                   |  0.505883194879% |         
1004B |         1011B |        64.6Mb |         67439
MaKaC.registration.AccommodationForm               |  0.505504386222% |         
 336B |         2.4Kb |        64.5Mb |        162617
MaKaC.common.indexes.NameIndex                     |  0.504083259697% |       
833.3Kb |       834.5Kb |        64.3Mb |            88
MaKaC.paperReviewing.ConferencePaperReview         |  0.492319066691% |         
1.4Kb |         1.8Kb |        62.8Mb |         46735
MaKaC.common.log.LogHandler                        |  0.489389729645% |         
 125B |       230.2Kb |        62.5Mb |        161374
BTrees.OOBTree.OOBTree                             |  0.488447475429% |         
  29B |        15.1Kb |        62.3Mb |       1127411
MaKaC.evaluation.Evaluation                        |  0.484225493257% |         
 429B |         5.2Kb |        61.8Mb |        135366
MaKaC.contributionReviewing.RefereeJudgement       |  0.432548703775% |         
 214B |          279B |        55.2Mb |        262267
MaKaC.contributionReviewing.EditorJudgement        |   0.43058899255% |         
 213B |          278B |        55.0Mb |        262267
MaKaC.participant.Participation                    |  0.422333266833% |         
 326B |         2.9Kb |        53.9Mb |        160734
MaKaC.review.AbstractField                         |  0.373892633417% |         
 140B |          677B |        47.7Mb |        300242
MaKaC.registration.Registrant                      |  0.372431476949% |         
 509B |         5.8Kb |        47.5Mb |         55948
MaKaC.badge.BadgeTemplateManager                   |  0.372123036404% |         
 337B |          616B |        47.5Mb |        131103
MaKaC.conference.SessionSlot                       |  0.351320325664% |         
 465B |          835B |        44.8Mb |         88288
BTrees.OOBTree.OOSet                               |   0.32404588564% |         
  31B |        14.6Kb |        41.4Mb |        400049
MaKaC.schedule.ConferenceSchedule                  |  0.316500581209% |         
 197B |         3.1Kb |        40.4Mb |        138328
MaKaC.poster.PosterTemplateManager                 |  0.311345393964% |         
 344B |          705B |        39.7Mb |        121008
MaKaC.review.Abstract                              |  0.283116332811% |         
 914B |        15.0Kb |        36.1Mb |         15461
MaKaC.conference.DeletedObject                     |  0.278782742044% |         
 234B |          338B |        35.6Mb |        132081
MaKaC.conference.ConferenceChair                   |  0.278144422481% |         
 170B |         1.1Kb |        35.5Mb |        138480
MaKaC.common.indexes.StatusIndex                   |  0.276938315862% |       
516.6Kb |       517.4Kb |        35.3Mb |            79
MaKaC.schedule.LinkedTimeSchEntry                  |  0.276078266128% |         
 167B |          277B |        35.2Mb |        176351
BTrees.IOBTree.IOBucket                            |  0.276075568572% |         
  53B |         4.7Kb |        35.2Mb |         39091
MaKaC.registration.ReasonParticipationForm         |  0.275844333438% |         
 125B |         1.3Kb |        35.2Mb |        162615
MaKaC.conference.ContribSchEntry                   |  0.273799324134% |         
 164B |          232B |        34.9Mb |        169253
MaKaC.plugins.Collaboration.base.CSBookingManager  |  0.261076444981% |         
 272B |          757B |        33.3Mb |        124660
MaKaC.registration.MiscellaneousInfoGroup          |  0.258388789563% |         
 221B |          664B |        33.0Mb |        105350
MaKaC.conference.AcceptedContribution              |  0.257560198866% |         
1.0Kb |        15.4Kb |        32.9Mb |         11621
MaKaC.registration.SessionsForm                    |  0.253256161661% |         
 180B |          935B |        32.3Mb |        162613
MaKaC.conference.AuthorIndex                       |   0.23525881993% |         
  87B |          150B |        30.0Mb |        326067
MaKaC.common.pendingQueues.ConfPendingQueuesMgr    |  0.229919929841% |         
 188B |         8.3Kb |        29.3Mb |        162534
MaKaC.badge.BadgePDFOptions                        |  0.222809462537% |         
 289B |          337B |        28.4Mb |         91805
MaKaC.participant.Participant                      |  0.221962168285% |         
 278B |          648B |        28.3Mb |         77802
indico.ext.livesync.base.ActionWrapper             |  0.215379555236% |         
 186B |          260B |        27.5Mb |        139155
BTrees._OOBTree.OOBucket                           |  0.212283716937% |         
  96B |        50.0Kb |        27.1Mb |         44251
MaKaC.registration.PersonalData                    |  0.206553613914% |         
 170B |          170B |        26.4Mb |        162609
MaKaC.review.AbstractFieldsMgr                     |  0.202769726862% |         
  54B |          323B |        25.9Mb |        150339
MaKaC.conference._PrimAuthIdx                      |  0.175618006974% |         
 144B |          161B |        22.4Mb |        162608
MaKaC.registration.FurtherInformationForm          |  0.174282088859% |         
 115B |         1.4Kb |        22.2Mb |        162621
MaKaC.review._PrimAuthIdx                          |  0.165897179332% |         
 136B |          157B |        21.2Mb |        162607
MaKaC.review.Author                                |  0.163428892788% |         
 184B |         2.1Kb |        20.9Mb |         78702
MaKaC.review.SubmissionNotification                |  0.161561391664% |         
  74B |          304B |        20.6Mb |        161458
MaKaC.registration.Notification                    |  0.157797112334% |         
  70B |         3.6Kb |        20.1Mb |        162688
MaKaC.webinterface.displayMgr.TickerTape           |  0.156141044337% |         
 129B |          857B |        19.9Mb |        161862
MaKaC.conference.SubContribParticipation           |  0.151651309141% |         
 185B |          496B |        19.4Mb |         75876
[..]ins.Collaboration.EVO.collaboration.CSBooking  |  0.148266488573% |         
1.9Kb |         4.2Kb |        18.9Mb |          8519
MaKaC.conference.SubmitterIndex                    |  0.139422299515% |         
  91B |          122B |        17.8Mb |        162609
MaKaC.webinterface.displayMgr.Format               |  0.136017482656% |         
  98B |          118B |        17.4Mb |        161897
MaKaC.conference.Link                              |  0.131640417144% |         
 160B |         2.6Kb |        16.8Mb |         67239
MaKaC.conference.CustomLocation                    |  0.129713906039% |         
  74B |         1.2Kb |        16.6Mb |        205868
MaKaC.conference.Minutes                           |  0.127516518423% |         
 302B |         6.5Kb |        16.3Mb |         42516
MaKaC.conference.BOAConfig                         |  0.125166655353% |         
 100B |          880B |        16.0Mb |        162609
MaKaC.review._AbstractParticipationIndex           |  0.120944949663% |         
  99B |          129B |        15.4Mb |        162609
MaKaC.schedule.SlotSchedule                        |  0.114537296686% |         
 192B |         2.0Kb |        14.6Mb |         62680
MaKaC.conference.SessionChair                      |  0.102154421729% |         
 170B |          534B |        13.0Mb |         53515
MaKaC.conference.TCIndex                           |  0.101505932154% |         
  83B |          113B |        13.0Mb |        162612
MaKaC.conference.SCIndex                           |   0.10150460953% |         
  83B |          113B |        13.0Mb |        162609
MaKaC.schedule.SessionSchedule                     |  0.100569738099% |         
 191B |          840B |        12.8Mb |         57430
MaKaC.schedule.BreakTimeSchEntry                   | 0.0951844664785% |         
 232B |         2.3Kb |        12.1Mb |         36809
MaKaC.paperReviewing.Status                        | 0.0911314813598% |         
  83B |           93B |        11.6Mb |        140189
MaKaC.webinterface.displayMgr.ImagesManager        | 0.0807878170819% |         
 197B |          820B |        10.3Mb |         54793
MaKaC.conference.CustomRoom                        | 0.0795048637309% |         
  47B |          183B |        10.1Mb |        182436
MaKaC.webinterface.displayMgr.StyleManager         | 0.0741101170368% |         
 136B |          313B |         9.5Mb |         72824
BTrees.IOBTree.IOBTree                             |  0.066319222884% |         
  29B |        21.0Kb |         8.5Mb |         85500

_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to