CoursPress speed and performance VERY slow on front-end

Hi there,

I'm referring to this topic of mine:
https://premium.wpmudev.org/forums/topic/coursepress-redirect-to-a-different-page-when-course-completed?replies=1#post-813504

This is an SERIOUS issue!
The front-end of a course is SUPER SLOW.
Especially logging in and when you click between Units to Notifications or any of the Menu items in the dashboard.

My hosting company is saying that the server is not the cause of the delay and that it's the plugin and I must optimize.

I've tried all the suggestions from your blog on how to speed up my site:

1) Caching
2) Optimizing images
3) Minify js/css
4) GZIP Compression
5) Many more...

Nothing is working.....

I would really appreciate a solution here, as the project has been standing still for months now and it's in serious trouble. Feel free to check all the tickets I've submitted over the last few months and now this.

If the website is operating that SLOW, I might as well pull the plug on the project, because no one will be signing up :slight_frown:

PLEASE HELP

  • Jude
    • DEV MAN

    Hi There Tony

    Can you share a plugin profile result of your site ? I did some testing on the site and here are my findings.

    It took 1.4 minutes to transfer 230 KB. Also the requests were about 46 (on the lower side). I would still opine that this is a bottleneck on the Host. Not the bandwidth part but the processing and RAM on the server that serves this content.

    Can you get details about the hosting environment along with uplink/downlink speeds of the data center ? Is this a shared host ?

    1) Caching
    2) Optimizing images
    3) Minify js/css
    4) GZIP Compression
    5) Many more...

    Nothing is working.....

    These techniques help to an extent when the site or the bandwidth is the bottleneck but not so much otherwise. Also can you share details on how the MySQL server is configured ? Is it on a separate IP / Physical location from the webserver ? Also can you share details of your php info page? I need this to check memory and process restrictions on the PHP handler

    Also I am marking this thread private so nobody else can see the details you share. Please take a look at the screenshot of my tests, I did this with a dedicated 512 MB GPU assigned to the browser, so definitely no client side bottlenecks

    Cheers
    Jude

  • Tony
    • Site Builder, Child of Zeus

    > Can you share details on how the MySQL server is configured ?
    Is it on a separate IP / Physical location from the webserver ?

    The MySQL server is configured on the same server and on the same IP address.

    > Also can you share details of your php info page? I need this to check memory and process restrictions on the PHP handler

    You can check the phpinfo by visiting the below URL :

    ====
    http://theskillsstudio.co.za/info.php

  • Tony
    • Site Builder, Child of Zeus

    The MTN datacenter where the server is located has a 1GB uplink.

    The issue is not with the server performance, nor the network. Overall factors in performance are within acceptable ranges and the server is barely under any load. I've provided text outputs for some performance checks you can fine in /home/tskllsh:

    iostat.txt
    mpstat.txt
    meminfo.txt

    The problem, however, does seem to be related to the time for database queries to complete. There are some concerns regarding slow queries which were logged. I've provided a copy of the slow query log in /home/tskllsh called mysql_slow_query_log. Use of proper table indexing is paramount in making a site with a large MySQL database run optimally. Here is the contents for my.cnf:

    root@stormtankptyltd [/home/tskllsh]# cat /etc/my.cnf
    [mysqld]

    set-variable = max_connections=500
    safe-show-database
    log-slow-queries = /var/log/mysql_slow_query_log
    long_query_time = 10
    max_connections = 400
    key_buffer = 64M
    myisam_sort_buffer_size = 32M
    join_buffer_size = 16M
    read_buffer_size = 16M
    sort_buffer_size = 16M
    table_cache = 1500
    thread_cache_size = 128
    interactive_timeout = 150
    wait_timeout = 150
    connect_timeout = 10
    max_allowed_packet = 8M
    max_connect_errors = 10
    query_cache_limit = 1M
    query_cache_size = 64M
    query_cache_type = 1

    innodb_flush_method=O_DIRECT

    max_delayed_threads=0
    open_files_limit=50000

    innodb_file_per_table=1
    innodb_buffer_pool_size=55574528
    max_allowed_packet=268435456

    Network performance also shows to be good, as per the following output:

    root@stormtankptyltd [~]# wget -O /dev/null http://armstrongs.co.za/test100.file
    --2015-01-26 15:41:02-- http://armstrongs.co.za/test100.file
    Resolving armstrongs.co.za... 196.38.40.162
    Connecting to armstrongs.co.za|196.38.40.162|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 104857600 (100M) [text/plain]
    Saving to: “/dev/null”

    100%[====================================================================================================================================================================================================>] 104,857,600 4.25M/s in 28s

    2015-01-26 15:41:31 (3.56 MB/s) - “/dev/null” saved [104857600/104857600]

    Seeing as the issue is observed, after logging in and requesting a portfolio, your bottleneck is your MySQL database and the query for the information. I'd suggest you instruct your developers to have a look at that.

  • Hoang Ngo
    • Code Slayer

    Hi @Tony,

    I hope you are well today.

    As you said above, the HP sent you a log for slow MySQL query, I think it's safer if you can provide me FTP access to check instead of upload the log file here. Can you please send in:

    - Mark to my attention - ATTN: Hoang Ngo
    - Link back to this thread
    - Include FTP
    - Include any relevant URLS for your site

    On the contact form, select "I have a different question", this ensures it comes through and gets assigned to me.

    That's can help us to improve the product :slight_smile:. I'm sorry for this inconvenience and many thanks for your patience.

    Best regards,
    Hoang

  • Hoang Ngo
    • Code Slayer

    @Tony,

    Thanks for your information. I'm checking your SQL log, actually I don't think any plugins or even, WordPress need to run some query like this (your log is full of this :slight_frown: )
    SELECT TABLE_SCHEMA as DB,SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) AS SPACEUSED from information_schema.tables GROUP BY TABLE_SCHEMA;
    This is usually from System, not any web applications. I think this is a tool from the Host, to calculate database space each queries. Do you using cPanel?, as cPanel has an option like this
    Include databases in disk usage calculations
    If it turn on, can you please turn it off, that will help I think.

    Best regards,
    Hoang

  • Hoang Ngo
    • Code Slayer

    @Tony

    Hmm, honestly, I don't think this is a dedicated server. As you only got 1GB bandwidth (cheapest sharedhosting should have at least 5GB), other resources are very limit too , unless this only a test node in your server.

    Also, when I visit MySQL database section, I got this warning message
    This server is running an unsupported MySQL version (5.1). Ask your system administrator to upgrade MySQL to improve security and features.
    This is potential issues, I think your should check with your HP for this.

    When I try to check the performance, by going to this page
    https://www.theskillsstudio.co.za:2083/cpsess8706513609/frontend/x3/status.html, the performance not really good, CPU sometime go to very high (1.92)

    I gone through your sql log again, almost the queries is execute by root account, this mean system level, not web app, so I believe the issue on your server. If you host the site on your dev/testing node, which limited server resource, can you please upgrade it access more resource?

    Best regards,
    Hoang

  • Tony
    • Site Builder, Child of Zeus

    Thank you Hoang,

    They asked me to show you this:
    14:00:22 up 35 days, 7:59, 1 user, load average: 0.05, 0.12, 0.15
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root pts/2 196.33.227.118 14:00 0.00s 0.02s 0.00s w

    Saying that there's almost no load on the server.

    They are looking into the MySQL error...

    Will keep you posted...

  • Tony
    • Site Builder, Child of Zeus

    Hi Hoang,

    Here's what the server guys said:

    We can upgrade MySQL, but the client must understand that there's no going back. It is, therefore, important they not only have backups of their databases, but they also ensure their current MySQL database are compatible with the new version. The current MySQL version is 5.1. We can upgrade to either 5.5 or 5.6. We would recommend 5.6 as it is the latest. If the client or their developers have reviewed the change logs of MySQL and are happy, we can proceed with the change."

    Please let me know how to proceed?

  • Hoang Ngo
    • Code Slayer

    Hi Tony,

    I hope you are well today.

    Actually our plugins only need to same requirement of WordPress here https://wordpress.org/about/requirements/
    Because I saw cPanel warning issue with MySQL, so I just informed you that :slight_smile:. Personally, If I am a client, and I saw warning like that, I will report to the hosting ASAP.
    But back to your issues, and the long queries, like I said above, it's all come from root account, mean server layer. Btw, if the server guys said they turn it off, and it still slow. So can you please send me the newest long queries log, just need to copy it like the way you sent me before :slight_smile:

    Best regards,
    Hoang

  • Hoang Ngo
    • Code Slayer

    @Tony,

    How many WordPress sites you hosted on your dedicated server, in the mysql_slow_query_log, I saw at least 5 WordPress databases there.

    Also, this been sad for saying this, but with simple query like this
    SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
    It's take about 12 seconds for done the query, which not good :slight_frown:. I suggest you to find another option for hosting.

    In the meantime, Would it be ok if I replicate your site on my server for testing purposes?
    Best regards,
    Hoang

  • Tony
    • Site Builder, Child of Zeus

    Hi Hoang,

    I'm thinking at this stage, if possible:

    If you replicate my site on your server and the 'issue' with speed is fixed, then let me know what the cost for hosting would be.

    I'll then just point domain to your server and pay you monthly hosting :slight_smile:

    Let me know, thanks!

  • Hoang Ngo
    • Code Slayer

    @Tony,

    Changing server is too much for now, as you are very close to the deadline. I think setup a cache properly can help for now. Unfortunately, the admin account you sent me earlier not work anymore, can you please check? :slight_smile:

    Best regards,
    Hoang

  • Tony
    • Site Builder, Child of Zeus

    Hi Hoang,

    Thank you for your reply.

    I've extended support in the back-end. Or which admin account are you talking about?

    Currently, I have WP SUPER Cache and WP Super Minify running.

    Can you maybe check if I have it set up correctly.

    I'm at PC and ready to save this project today.

    Awaiting your reply :slight_smile:

  • Hoang Ngo
    • Code Slayer

    @Tony,

    I hope you are well today and I'm sorry for the delay.

    I've just got an email from the developer saying the performance has improved a lot now, from 17s to 0.5s. He said he doing some tests before release new version FYI.

    I'm sorry again for the issue and thank you for your patience :slight_smile:

    Best regards,
    Hoang

  • Kent
    • Design Lord, Child of Thor

    Wow, Tony, you have been through the ringer. I've been looking at other CoursePress threads/issues and it seems like the slowness issue is not your host. This appears to be a common problem among CoursePress users--me included.

  • Tony
    • Site Builder, Child of Zeus

    WOW WOW WOW!!!

    That is DRAMATIC increase. From 90+ seconds down to 4 seconds.

    I'm stunned guys.

    Thanks a million million.

    Give me your boss's email address so I can write you a review and let him know what a kick-ass team you are: Hoang, Ash, Marko, Jude, Michelle, David and George:smiley:

  • Michelle Shull
    • DEV MAN’s Apprentice

    Hey there, Tony!

    Are you talking about the gray box at the top, with the "1" in it? I think we can get rid of that, but I'm going to need you to do just a little detective work for me.

    1. Open that page in a browser. Right click the gray bar, and choose "inspect element."
    2. That should tell you the element name, jot it down, making sure to note if there's a . or a # at the beginning.
    3. Using that information, use the CSS I listed below to hide that element.

    YOUR ELEMENT NAME:nth-of-type(1) {
    display: none;
    }

    Add that to a custom CSS file. Do you have a custom CSS plugin? If you've got Jetpack, it comes with one; some themes include a CSS editor, or you can get a plugin, like this one: https://wordpress.org/plugins/simple-custom-css/. Or, if you're using a child theme, you can just add this to the CSS file for your child theme.

    If that doesn't get it, let me know, I've got all kinds of CSS wrangling tricks up my sleeve.

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.