Strategy for identifying bottleneck on slow loading site?
Permalink
Does anyone have a strategy for finding slow processes in C5?
I have a site that is having issues (load times vary from 25seconds to over a minute). I have worked with my Bluehost and they indicate that it is a problem with C5. When I look at the timeline, all of the delay is in "Waiting" for the initial response. Once it starts to load, it loads in a reasonably timely manner.
Has anyone else had load times like that? Any suggestions about where to start looking or a strategy for identifying the problem would be appreciated. My website ishttp://partywickless.com
Thanks in advance.
Bret
I have a site that is having issues (load times vary from 25seconds to over a minute). I have worked with my Bluehost and they indicate that it is a problem with C5. When I look at the timeline, all of the delay is in "Waiting" for the initial response. Once it starts to load, it loads in a reasonably timely manner.
Has anyone else had load times like that? Any suggestions about where to start looking or a strategy for identifying the problem would be appreciated. My website ishttp://partywickless.com
Thanks in advance.
Bret
Add any new blocks lately?
No new blocks. Bluehost suggested disabling all of my plug-ins to see if that fixes the problem.
Couple of things shown up by 'Page Speed':
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.9KiB.
•http://partywickless.com/files/1013/1042/2417/11SS_BHJ_Host_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_host_en.png...
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.8KiB.
•http://partywickless.com/files/8613/1042/2417/11SS_BHJ_Buy_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_buy_en.png...
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.0KiB.
•http://partywickless.com/files/1113/1042/2418/11SS_BHJ_Join_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_join_en.png...
485.4KiB of JavaScript is parsed during initial page load. Defer parsing JavaScript to reduce blocking of page rendering.
•http://s.ytimg.com/yt/jsbin/www-embed_core_module-vflktpa-4.js... (201.4KiB)
•http://partywickless.com/concrete/js/jquery.js?v=8d378c6b1148dce861... (82.6KiB)
•http://partywickless.com/concrete/js/jquery.js?v=8d378c6b1148dce861... (82.6KiB)
•http://s7.addthis.com/js/152/addthis_widget.js... (52.5KiB)
•http://s7.addthis.com/static/r07/sh64.html... (34.7KiB of inline JavaScript)
•http://partywickless.com/concrete/js/jquery.form.js?v=8d378c6b1148d... (12.1KiB)
•http://partywickless.com/concrete/js/jquery.form.js?v=8d378c6b1148d... (12.1KiB)
•http://partywickless.com/ (2.7KiB of inline JavaScript)
•http://www.facebook.com/plugins/like.php?app_id=220007881367883&... (2.0KiB of inline JavaScript)
•http://partywickless.com/concrete/js/ccm.base.js?v=8d378c6b1148dce8... (1.1KiB)
•http://partywickless.com/concrete/js/ccm.base.js?v=8d378c6b1148dce8... (1.1KiB)
•http://www.youtube.com/embed/i03Z1mNF5R4?rel=0... (348B of inline JavaScript)
•http://partywickless.com/images/scentsy_logo.png... (155B of inline JavaScript)
Some of the above you should be able to improve on, some are impossible to fix?
Q: Compressing resources with gzip could reduce their transfer size by 115.4KiB (67% reduction).
A: Possibly from cPanel - Optimise Website button, if you have one and if Gzip is enabled on your server, or a little code in your .htaccess file.
Q: The following cacheable resources have a short freshness lifetime. Specify an expiration at least one week in the future for the following resources:
A: Some code added to your .htaccess file.
I also found that cashing helped for me.
Dashboard - Sitewide Setting - Speed Settings - (tick) Enabled if blocks allow it, unless specified at page level.
"Every Little Helps"
Steev
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.9KiB.
•http://partywickless.com/files/1013/1042/2417/11SS_BHJ_Host_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_host_en.png...
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.8KiB.
•http://partywickless.com/files/8613/1042/2417/11SS_BHJ_Buy_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_buy_en.png...
The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 1 request(s) and 2.0KiB.
•http://partywickless.com/files/1113/1042/2418/11SS_BHJ_Join_en.png...
•http://partywickless.com/themes/scentsy/images/11ss_bhj_join_en.png...
485.4KiB of JavaScript is parsed during initial page load. Defer parsing JavaScript to reduce blocking of page rendering.
•http://s.ytimg.com/yt/jsbin/www-embed_core_module-vflktpa-4.js... (201.4KiB)
•http://partywickless.com/concrete/js/jquery.js?v=8d378c6b1148dce861... (82.6KiB)
•http://partywickless.com/concrete/js/jquery.js?v=8d378c6b1148dce861... (82.6KiB)
•http://s7.addthis.com/js/152/addthis_widget.js... (52.5KiB)
•http://s7.addthis.com/static/r07/sh64.html... (34.7KiB of inline JavaScript)
•http://partywickless.com/concrete/js/jquery.form.js?v=8d378c6b1148d... (12.1KiB)
•http://partywickless.com/concrete/js/jquery.form.js?v=8d378c6b1148d... (12.1KiB)
•http://partywickless.com/ (2.7KiB of inline JavaScript)
•http://www.facebook.com/plugins/like.php?app_id=220007881367883&... (2.0KiB of inline JavaScript)
•http://partywickless.com/concrete/js/ccm.base.js?v=8d378c6b1148dce8... (1.1KiB)
•http://partywickless.com/concrete/js/ccm.base.js?v=8d378c6b1148dce8... (1.1KiB)
•http://www.youtube.com/embed/i03Z1mNF5R4?rel=0... (348B of inline JavaScript)
•http://partywickless.com/images/scentsy_logo.png... (155B of inline JavaScript)
Some of the above you should be able to improve on, some are impossible to fix?
Q: Compressing resources with gzip could reduce their transfer size by 115.4KiB (67% reduction).
A: Possibly from cPanel - Optimise Website button, if you have one and if Gzip is enabled on your server, or a little code in your .htaccess file.
Q: The following cacheable resources have a short freshness lifetime. Specify an expiration at least one week in the future for the following resources:
A: Some code added to your .htaccess file.
I also found that cashing helped for me.
Dashboard - Sitewide Setting - Speed Settings - (tick) Enabled if blocks allow it, unless specified at page level.
"Every Little Helps"
Steev
a twelve second response for the main page and then really fast serving of other assets suggests that it may be database related. if you SSH into your server and run the "top" command, you can see which processes are using the most server resources. guessing it'll be mysql that's slow.
are you on a shared host? if so that can make diagnosing the problem difficult since it could just as easily be someone else's site that's thrashing the DB. if you have access you can try playing with the mysql slow query logger to see if there are any db calls that are extra inefficient.
it also looks like you're leaning really heavily on the layout tool. I'm not sure if that's your main problem, but it does mean some unnecessary DB calls. I'm not sure what optimization has been done on that in the past year, like if any of that is cached, but you can probably avoid using a bunch of those by hardcoding more of your page layouts with CSS and page types. pages like this shouldn't need the layout tool at all.
http://partywickless.com/contact...
are you on a shared host? if so that can make diagnosing the problem difficult since it could just as easily be someone else's site that's thrashing the DB. if you have access you can try playing with the mysql slow query logger to see if there are any db calls that are extra inefficient.
it also looks like you're leaning really heavily on the layout tool. I'm not sure if that's your main problem, but it does mean some unnecessary DB calls. I'm not sure what optimization has been done on that in the past year, like if any of that is cached, but you can probably avoid using a bunch of those by hardcoding more of your page layouts with CSS and page types. pages like this shouldn't need the layout tool at all.
http://partywickless.com/contact...
Thanks Tony, I will do some more research about mysql and DBs in general. I suspect it may be something like this because all of my pages are slow.
I had crazy loading times on a single page with nearly 200 separate areas. I added indexes to the bID and isOriginal columns of the CollectionVersionBlocks tables since they were being referenced thousands of times.
That was a special case, though, as I typically don't have that many areas on a single page.
That was a special case, though, as I typically don't have that many areas on a single page.
try setting your cache to off (dashboard-sitewide settings - speed settings?) and compare load times. Your actual site score is ranked surprisingly high for load speed once that crazy wait is done.
Thank you all for the quick replies and good suggestions. I found the
following on my Php error log and I wonder if this is related to the
slowdown:
/home1/partywic/public_html/error_log: [25-Oct-2011 13:26:32] PHP Fatal
error: Uncaught exception 'Exception' with message 'Oops, something is wrong
with the form you posted (it doesn't have a question set id).' in
/home1/partywic/public_html/concrete/blocks/form/controller.php:204 Stack
trace: #0 /home1/partywic/public_html/concrete/models/block.php(324):
FormBlockController->action_submit_form() #1
/home1/partywic/public_html/concrete/startup/process.php(267):
Block->passThruBlock('submit_form') #2
/home1/partywic/public_html/concrete/dispatcher.php(249):
require('/home1/partywic...') #3 /home1/partywic/public_html/index.php(2):
require('/home1/partywic...') #4 {main} thrown in
/home1/partywic/public_html/concrete/blocks/form/controller.php on line 204
[25-Oct-2011 13:26:34] PHP Fatal error: Uncaught exception 'Exception' with
message 'Oops, something is wrong with the form you posted (it doesn't have
a question set id).' in
/home1/partywic/public_html/concrete/blocks/form/controller.php:204 Stack
trace: #0 /home1/partywic/public_html/concrete/models/block.php(324):
FormBlockController->action_submit_form() #1
/home1/partywic/public_html/concrete/startup/process.php(267):
Block->passThruBlock('submit_form') #2
/home1/partywic/public_html/concrete/dispatcher.php(249):
require('/home1/partywic...') #3 /home1/partywic/public_html/index.php(2):
require('/home1/partywic...') #4 {main} thrown in
/home1/partywic/public_html/concrete/blocks/form/controller.php on line 204
Can anyone translate this for me or point me to a tutorial of how to
interpret and what to change to fix it?
Bret
following on my Php error log and I wonder if this is related to the
slowdown:
/home1/partywic/public_html/error_log: [25-Oct-2011 13:26:32] PHP Fatal
error: Uncaught exception 'Exception' with message 'Oops, something is wrong
with the form you posted (it doesn't have a question set id).' in
/home1/partywic/public_html/concrete/blocks/form/controller.php:204 Stack
trace: #0 /home1/partywic/public_html/concrete/models/block.php(324):
FormBlockController->action_submit_form() #1
/home1/partywic/public_html/concrete/startup/process.php(267):
Block->passThruBlock('submit_form') #2
/home1/partywic/public_html/concrete/dispatcher.php(249):
require('/home1/partywic...') #3 /home1/partywic/public_html/index.php(2):
require('/home1/partywic...') #4 {main} thrown in
/home1/partywic/public_html/concrete/blocks/form/controller.php on line 204
[25-Oct-2011 13:26:34] PHP Fatal error: Uncaught exception 'Exception' with
message 'Oops, something is wrong with the form you posted (it doesn't have
a question set id).' in
/home1/partywic/public_html/concrete/blocks/form/controller.php:204 Stack
trace: #0 /home1/partywic/public_html/concrete/models/block.php(324):
FormBlockController->action_submit_form() #1
/home1/partywic/public_html/concrete/startup/process.php(267):
Block->passThruBlock('submit_form') #2
/home1/partywic/public_html/concrete/dispatcher.php(249):
require('/home1/partywic...') #3 /home1/partywic/public_html/index.php(2):
require('/home1/partywic...') #4 {main} thrown in
/home1/partywic/public_html/concrete/blocks/form/controller.php on line 204
Can anyone translate this for me or point me to a tutorial of how to
interpret and what to change to fix it?
Bret
The strange delay before the page loads seems to have gone away. I am not sure exactly what fixed it, but I still have the Php errors so that was not the problem. Thanks again for all of your help and ideas. Bret
no, that php error shouldn't contribute to the slowness.
Last night load times were consistently below 5 seconds. Now they are back to 10 seconds up to as long as 1 minute and 40 seconds. I have not changed anything since last night.
Ok. I'm still in agreement with bluehost. Have you installed an addons/plugins, sorry I used the term blocks.
My money is that something is doing a request to another site to pull some data with php curl or something.
When that data isn't there(causing it to timeout) or is slow to respond the whole site sits and waits until it's finished giving you the long initial wait.
My money is that something is doing a request to another site to pull some data with php curl or something.
When that data isn't there(causing it to timeout) or is slow to respond the whole site sits and waits until it's finished giving you the long initial wait.
I should add that this may have been working just fine for a while because that other site was responding in a timely fashion until just recently.
I second that. Just worked on a site where load times were consistently 30-40 seconds. Turned out it had a block with a javascript call to a twitter API that was way outdated, so it was receiving data it couldn't parse, and timed out around 30 seconds.
In poking around, I simply created a page with no blocks on it, and added one at a time... when I got to the twitter feed, the page took 30 seconds to load.
I had also found a referenced css file which was non-existent. This caused C5 to try to parse its own 404 page, and that caused a little delay as well.
In another block, I found a reference to a JavaScript file, which was calling some duplicate JavaScript resources and that was causing some issues as well.
If you have access to SSH, and can run top, you can see the server processes... if you notice your server isn't using a lot of cpu cycles, load time or memory, it's likely something is timing out, or some kind of parsing error.
Also - most of the time I run with cache turned off, as my mySQL server is pretty fast, and seems more consistent than hard drive speed.
Good Luck!
- Phil
In poking around, I simply created a page with no blocks on it, and added one at a time... when I got to the twitter feed, the page took 30 seconds to load.
I had also found a referenced css file which was non-existent. This caused C5 to try to parse its own 404 page, and that caused a little delay as well.
In another block, I found a reference to a JavaScript file, which was calling some duplicate JavaScript resources and that was causing some issues as well.
If you have access to SSH, and can run top, you can see the server processes... if you notice your server isn't using a lot of cpu cycles, load time or memory, it's likely something is timing out, or some kind of parsing error.
Also - most of the time I run with cache turned off, as my mySQL server is pretty fast, and seems more consistent than hard drive speed.
Good Luck!
- Phil
Thanks for the explanation -- that makes sense.
have you noticed any correlation between website traffic and loadtimes? If not, then it's probably traffic that's hitting another website on the same shared server that's causing your site to run slowly. In that case the only solution is to move off of a shared host.
Thanks for all your help!! I will look closer at the hosting situation.