Anything I can do to improve performance?

5 years 10 months ago #238577 by OldLodgeSkins
Hi,

Let's be clear from the start, chances are CB is not at fault here, I'll explain why in a moment, still I wanted to ask as you guys may be able to point me in the right direction...

So. I am currently finishing the development of a website that uses Joomla 3.2, CB, CBSubs, AutoActions, CBConditional mainly.

Where I say that my performance issues are probably not directly due to CB, is that I originally developed it on my local server, a small Pentium 4 3GHz / 2GB, and it was running fine. My partner in the US (I'm in France) tells me he has 12 seconds from home page to profile display, even though it's on my local ADSL line, so this seems quite good.
The EXACT same website on the dedicated server we have just ordered, quad-core Xeon / 6GB, runs slow, especially when displaying / editing a user profile. There are only the two of us on it right now, so this is not a matter of overload. I have also uninstalled everything that is not absolutely required (stuff I had tested and decided not to keep...).

From this, my conclusion would be that something's wrong with the server's configuration, and I've asked the support staff to investigate. Still you know way better than me the way Joomla and CB operate so you may have some additional clues...

The debug output points me to this:
Time: 0.0 ms / 0.0 ms Memory: 0.691 MB / 0.69 MB Application: afterLoad
Time: 10223.0 ms / 10223.0 ms Memory: 5.148 MB / 5.84 MB Application: afterInitialise
Time: 79.7 ms / 10302.7 ms Memory: 1.514 MB / 7.35 MB Application: afterRoute
Time: 23266.4 ms / 33569.1 ms Memory: 45.526 MB / 52.88 MB Application: afterDispatch
Time: 123.8 ms / 33692.9 ms Memory: 1.205 MB / 54.08 MB Application: beforeRenderModule mod_custom (Footer)
Time: 5.8 ms / 33698.7 ms Memory: 0.046 MB / 54.13 MB Application: afterRenderModule mod_custom (Footer)
Time: 0.5 ms / 33699.2 ms Memory: 0.000 MB / 54.13 MB Application: beforeRenderModule mod_menu (Menu)
Time: 20.8 ms / 33720.0 ms Memory: 0.164 MB / 54.29 MB Application: afterRenderModule mod_menu (Menu)
Time: 0.7 ms / 33720.8 ms Memory: 0.000 MB / 54.29 MB Application: beforeRenderModule mod_custom (They use ScoopCode)
Time: 1.4 ms / 33722.2 ms Memory: 0.005 MB / 54.29 MB Application: afterRenderModule mod_custom (They use ScoopCode)
Time: 0.5 ms / 33722.7 ms Memory: 0.000 MB / 54.29 MB Application: beforeRenderModule mod_custom (Meet us on the social networks!)
Time: 1.4 ms / 33724.1 ms Memory: 0.004 MB / 54.30 MB Application: afterRenderModule mod_custom (Meet us on the social networks!)
Time: 0.6 ms / 33724.6 ms Memory: 0.001 MB / 54.30 MB Application: beforeRenderModule mod_cblogin (Member access)
Time: 14.1 ms / 33738.7 ms Memory: 0.039 MB / 54.34 MB Application: afterRenderModule mod_cblogin (Member access)
Time: 0.3 ms / 33739.0 ms Memory: 0.000 MB / 54.33 MB Application: beforeRenderModule mod_rokajaxsearch (Search)
Time: 7.3 ms / 33746.4 ms Memory: 0.048 MB / 54.38 MB Application: afterRenderModule mod_rokajaxsearch (Search)
Time: 0.3 ms / 33746.6 ms Memory: 0.000 MB / 54.37 MB Application: beforeRenderModule mod_custom (My ScoopCode)
Time: 1.5 ms / 33748.2 ms Memory: 0.005 MB / 54.38 MB Application: afterRenderModule mod_custom (My ScoopCode)
Time: 1.8 ms / 33749.9 ms Memory: 0.003 MB / 54.38 MB Application: beforeRenderModule mod_menu (Menu EN)
Time: 12.2 ms / 33762.1 ms Memory: 0.008 MB / 54.39 MB Application: afterRenderModule mod_menu (Menu EN)
Time: 5985.7 ms / 39747.8 ms Memory: 6.625 MB / 61.01 MB Application: afterRender

Database queries total: 345.7 ms

This is when going to edit a user account. Note that we have over 150 fields, our user accounts are quite complex. So I understand that this would generate a number of queries, but what I don't understand is that my test server runs this within seconds... And a quad-core Xeon needs a total of about 30 seconds to deliver the page.

According to my searches, Application: afterDispatch has to do with the database queries... Correct?
Is there anything I could do in your opinion to improve this? Have you ever seen something similar before?

Thanks.

Seb.
5 years 10 months ago - 5 years 10 months ago #238593 by krileon
afterInitialise is all Joomla. Extensions don't load in until afterDispatch and your afterInitialise is taking 10 seconds all on its own with afterDispatch taking 20 seconds so that's 30 seconds right there. afterInitialise is usually when Joomla begins connection to your database. So this could mean the connection to your database is extremely slow. afterInitialise should be nearly instant. This could be a simple configuration issue on the server; I'm not a server specialist so there's nothing I can really do to advise you on the matter.

As a benchmark the below is a CB profile with all of our products installed and configured with 70 fields.

Application 0.001 seconds (+0.001); 0.49 MB (+0.492) - afterLoad
Application 0.080 seconds (+0.079); 3.57 MB (+3.082) - afterInitialise
Application 0.444 seconds (+0.364); 11.73 MB (+8.156) - afterRoute
Application 3.156 seconds (+2.712); 41.13 MB (+29.397) - afterDispatch
Application 3.172 seconds (+0.016); 41.35 MB (+0.221) - beforeRenderModule mod_cblogin (CB Login)
Application 3.184 seconds (+0.012); 41.42 MB (+0.069) - afterRenderModule mod_cblogin (CB Login)
Application 3.185 seconds (+0.001); 41.41 MB (-0.010) - beforeRenderModule mod_login (Joomla Login)
Application 3.191 seconds (+0.006); 41.43 MB (+0.024) - afterRenderModule mod_login (Joomla Login)
Application 3.191 seconds (+0.000); 41.43 MB (-0.003) - beforeRenderModule mod_comprofilermoderator (CB Workflows)
Application 3.209 seconds (+0.018); 41.45 MB (+0.023) - afterRenderModule mod_comprofilermoderator (CB Workflows)
Application 3.209 seconds (+0.000); 41.45 MB (-0.004) - beforeRenderModule mod_comprofileronline (CB Online)
Application 3.214 seconds (+0.005); 41.46 MB (+0.014) - afterRenderModule mod_comprofileronline (CB Online)
Application 3.215 seconds (+0.001); 41.46 MB (-0.002) - beforeRenderModule mod_breadcrumbs (Breadcrumbs)
Application 3.219 seconds (+0.004); 41.48 MB (+0.020) - afterRenderModule mod_breadcrumbs (Breadcrumbs)
Application 3.220 seconds (+0.001); 41.47 MB (-0.003) - beforeRenderModule mod_search (Search)
Application 3.224 seconds (+0.004); 41.49 MB (+0.014) - afterRenderModule mod_search (Search)
Application 3.224 seconds (+0.000); 41.49 MB (-0.004) - beforeRenderModule mod_menu (Top)
Application 3.247 seconds (+0.023); 41.55 MB (+0.069) - afterRenderModule mod_menu (Top)
Application 3.251 seconds (+0.004); 41.80 MB (+0.249) - afterRender

This excludes all 3rd party extensions except Kunena. So this is the performance you should ideally be getting. 3rd party extensions can massively contribute to slow downs same as bad server configuration or heavy code usage issues (code loops).


Kyle (Krileon)
Community Builder Team Member
Before posting on forums: Read FAQ thoroughly + Read our Documentation + Search the forums
CB links: Documentation - Templates - CBSubs - Hosting - Forge - Incubator - GroupJive
--
If you are a Professional, Developer, or CB Paid Subscriptions subscriber and have a support issue please always post in your respective support forums for best results!
--
If I've missed your support post with a delay of 3 days or greater and are a Professional, Developer, or CBSubs subscriber please send me a private message with your thread and will reply when possible!
--
Please note I am available Monday - Friday from 8:00 AM EST to 4:00 PM EST. I am away on weekends (Saturday and Sunday) and if I've missed your post on or before a weekend after business hours please wait for the next following business day (Monday) and will get to your issue as soon as possible, thank you.
--
My role here is to provide guidance and assistance. I cannot provide custom code for each custom requirement. Please do not inquire me about custom development.
5 years 10 months ago #238604 by OldLodgeSkins
Your suspicions confirm mine... Configuration problem with the database engine.
I've just deployed a backup on a shared server I use for my own website... Loading the profiles takes around 8 - 10 seconds as opposed to 40 on the dedicated.
The problem is on the host's end. Definitely.
Thanks.
The following user(s) said Thank You: krileon
5 years 10 months ago #238677 by OldLodgeSkins
Just a quick additional question about performance... Out of curiosity.
Have you heard of people using CB with really a lot of fields - I'm talking in the area of 450 - 500?
And in that case, does 7 - 8 seconds to render the edition form (displaying the profile goes much faster) sound reasonable to you? I'm not talking about the same server as before, I've tested the website on another host, which runs much faster (the previous one was doing the same thing in... 40 - 50 seconds).

Thanks.
5 years 10 months ago #238701 by krileon
I've never heard of anyone using 400+ fields. I don't think you even can unless you switch the database engine to Innodb which would allow probably about 1,000. If you need that many fields though you really should reevaluate your usage to be more efficient as that is a LOT to ask of a user. No one should really exceed 100 fields at most as you risk alienating your entire userbase to never completing their profile (it just becomes too much).

As for the performance of 450+ fields yes it will get slower the more you add. This is because all fields are processed at once. If you're using CB Conditional or CB Privacy then you basically double/triple the process time as both of those plugins need to parse and remove fields as needed. I've never tested a 450+ field install so I can't give you any idea of what the performance should be.


Kyle (Krileon)
Community Builder Team Member
Before posting on forums: Read FAQ thoroughly + Read our Documentation + Search the forums
CB links: Documentation - Templates - CBSubs - Hosting - Forge - Incubator - GroupJive
--
If you are a Professional, Developer, or CB Paid Subscriptions subscriber and have a support issue please always post in your respective support forums for best results!
--
If I've missed your support post with a delay of 3 days or greater and are a Professional, Developer, or CBSubs subscriber please send me a private message with your thread and will reply when possible!
--
Please note I am available Monday - Friday from 8:00 AM EST to 4:00 PM EST. I am away on weekends (Saturday and Sunday) and if I've missed your post on or before a weekend after business hours please wait for the next following business day (Monday) and will get to your issue as soon as possible, thank you.
--
My role here is to provide guidance and assistance. I cannot provide custom code for each custom requirement. Please do not inquire me about custom development.
5 years 10 months ago #238705 by OldLodgeSkins
As far as I know it already is InnoDB... And it is working, now that we've changed of server. However I'm looking at the best options to make it run as smoothly as possible.

Filling the profiles wouldn't be a problem in itself, it is a very particular kind of website where people will leave personal data and 99% of the fields are optional. So they feel what they want. And it's a set-and-forget kind of thing, you set it once then update it maybe twice a year. There's no interaction between members, no forum, no messages... Just the profiles. I can't tell you more than that without breaching my NDA...

I'm studying the possibility to reduce the number of fields at the moment, especially by grouping several yes / no radio buttons into one single multi-checkbox for example. Does CB Conditional really make a BIG impact?
Moderators: beatnantkrileon
Time to create page: 0.419 seconds
Facebook Twitter Google LinkedIn