Welcome to the Question2Answer Q&A. There's also a demo if you just want to try it out.
+2 votes
1.5k views
in Q2A Core by

 

 

My site was unavailable for two hours.
I could not get in or on the server.
Now the site is available again.
But sometimes this message appears.

 

Please if you have any information, answer this question or send me a private message.

 

error_log in comments

 

Q2A version: 1.7
by
[Tue Feb 02 01:30:48 2016] [error] [client 117.135.250.138] PHP Question2Answer MySQL query error 2006: MySQL server has gone away - Query: (SELECT '0' AS selectkey, qa_posts.postid, qa_posts.categoryid, qa_posts.type, LEFT(qa_posts.type, 1) AS basetype, INSTR(qa_posts.type, '_HIDDEN')>0 AS hidden, qa_posts.acount, qa_posts.selchildid, qa_posts.closedbyid, qa_posts.upvotes, qa_posts.downvotes, qa_posts.netvotes, qa_posts.views, qa_posts.hotness, qa_posts.flagcount, qa_posts.title, qa_posts.tags, UNIX_TIMESTAMP(qa_posts.created) AS created, qa_posts.name, qa_categories.title AS categoryname, qa_categories.backpath AS categorybackpath, CONCAT_WS(',', qa_posts.catidpath1, qa_posts.catidpath2, qa_posts.catidpath3, qa_posts.categoryid) AS categoryids, qa_posts.userid, qa_posts.cookieid, INET_NTOA(qa_posts.createip) AS createip, qa_userpoints.points, qa_users.flags, qa_users.level, qa_users.email AS email, qa_users.handle AS handle, BINARY qa_users.avatarblobid AS avatarblobid, qa_users.avatarwidth, qa_users.avatarheight, NULL AS obasetype, NULL AS ohidden, NULL AS opostid, NULL AS ouserid, NULL AS ocookieid, NULL AS oname, NULL AS oip, NULL AS otime, NULL AS oflagcount, NULL AS oflags, NULL AS olevel, NULL AS oemail, NULL AS ohandle, NULL AS oavatarblobid, NULL AS oavatarwidth, NULL AS oavatarheight, NULL AS opoints, NULL AS parentid, NULL AS qcount, NULL AS position, NULL AS childcount, NULL AS content, NULL AS backpath, NULL AS action, NULL AS period, NULL AS count, NULL AS pageid, NULL AS permit, NULL AS nav, NULL AS heading, NULL AS widgetid, NULL AS place FROM qa_posts LEFT JOIN qa_categories ON qa_categories.categoryid=qa_posts.categoryid LEFT JOIN qa_users ON qa_posts.userid=qa_users.userid LEFT JOIN qa_userpoints ON qa_posts.userid=qa_userpoints.userid JOIN (SELECT postid FROM qa_posts WHERE type='Q' ORDER BY qa_posts.created DESC LIMIT 0,20) y ON qa_posts.postid=y.postid) UNION ALL (SELECT '1', qa_posts.postid, qa_posts.categoryid, qa_posts.type, LEFT(qa_posts.type, 1), INSTR(qa_posts.type, '_HIDDEN')>0, qa_posts.acount, qa_posts.selchildid, qa_posts.closedbyid, qa_posts.upvotes, qa_posts.downvotes, qa_posts.netvotes, qa_posts.views, qa_posts.hotness, qa_posts.flagcount, qa_posts.title, qa_posts.tags, UNIX_TIMESTAMP(qa_posts.created), qa_posts.name, qa_categories.title, qa_categories.backpath, CONCAT_WS(',', qa_posts.catidpath1, qa_posts.catidpath2, qa_posts.catidpath3, qa_posts.categoryid), qa_posts.userid, qa_posts.cookieid, INET_NTOA(qa_posts.createip), qa_userpoints.points, qa_users.flags, qa_users.level, qa_users.email, qa_users.handle, BINARY qa_users.avatarblobid, qa_users.avatarwidth, qa_users.avatarheight, LEFT(aposts.type, 1), INSTR(aposts.type, '_HIDDEN')>0, aposts.postid, aposts.userid, aposts.cookieid, aposts.name, INET_NTOA(aposts.createip), UNIX_TIMESTAMP(aposts.created), aposts.flagcount, ausers.flags, ausers.level, ausers.email, ausers.handle, BINARY ausers.avatarblobid, ausers.avatarwidth, ausers.avatarheight, auserpoints.points, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_posts LEFT JOIN qa_categories ON qa_categories.categoryid=qa_posts.categoryid LEFT JOIN qa_users ON qa_posts.userid=qa_users.userid LEFT JOIN qa_userpoints ON qa_posts.userid=qa_userpoints.userid JOIN qa_posts AS aposts ON qa_posts.postid=aposts.parentid LEFT JOIN qa_users AS ausers ON aposts.userid=ausers.userid LEFT JOIN qa_userpoints AS auserpoints ON aposts.userid=auserpoints.userid JOIN (SELECT postid FROM qa_posts WHERE type='A' ORDER BY qa_posts.created DESC LIMIT 0,50) y ON aposts.postid=y.postid WHERE qa_posts.type='Q') UNION ALL (SELECT '2', NULL, qa_categories.categoryid, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, qa_categories.title, qa_categories.tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, qa_categories.parentid, qa_categories.qcount, qa_categories.position, COUNT(child.categoryid), qa_categories.content, qa_categories.backpath, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_categories JOIN (SELECT NULL AS parentkey UNION SELECT grandparent.parentid FROM qa_categories JOIN qa_categories AS parent ON qa_categories.parentid=parent.categoryid JOIN qa_categories AS grandparent ON parent.parentid=grandparent.categoryid WHERE qa_categories.backpath='' UNION SELECT parent.parentid FROM qa_categories JOIN qa_categories AS parent ON qa_categories.parentid=parent.categoryid WHERE qa_categories.backpath='' UNION SELECT parentid FROM qa_categories WHERE backpath='' UNION SELECT categoryid FROM qa_categories WHERE backpath='') y ON qa_categories.parentid<=>parentkey LEFT JOIN qa_categories AS child ON child.parentid=qa_categories.categoryid GROUP BY qa_categories.categoryid ORDER BY qa_categories.position) UNION ALL (SELECT 'pending_iplimits', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, action, period, count, NULL, NULL, NULL, NULL, NULL, NULL FROM qa_iplimits WHERE ip=COALESCE(INET_ATON('117.135.250.138'), 0)) UNION ALL (SELECT 'pending_navpages', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, title, tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, flags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, position, NULL, NULL, NULL, NULL, NULL, NULL, pageid, permit+0, nav, heading, NULL, NULL FROM qa_pages WHERE nav IN ('B','M','O','F') ORDER BY position) UNION ALL (SELECT 'pending_widgets', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, title, tags, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, position, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, widgetid, place FROM qa_widgets ORDER BY position)
[Tue Feb 02 01:30:48 2016] [error] [client 117.135.250.138] PHP Question2Answer MySQL query error 2006: MySQL server has gone away - Query: UNLOCK TABLES
[Tue Feb 02 01:30:48 2016] [error] [client 187.19.126.248] PHP Warning:  mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/vhosts/spaceamigos.com/httpdocs/qa-include/qa-db.php on line 66, referer: http://spaceamigos.com/user/Allef
[Tue Feb 02 01:30:48 2016] [error] [client 187.19.126.248] PHP Question2Answer MySQL connect error 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2), referer: http://spaceamigos.com/user/Allef
[Tue Feb 02 01:30:48 2016] [error] [client 179.86.50.108] PHP Warning:  mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/vhosts/spaceamigos.com/httpdocs/qa-include/qa-db.php on line 66
[Tue Feb 02 01:30:48 2016] [error] [client 179.86.50.108] PHP Question2Answer MySQL connect error 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

1 Answer

+1 vote
by
selected by
 
Best answer

The errors say that the MySQL server stopped working or crashed. I don't think this is due to Q2A itself, it could be due to high server load. If you're on shared hosting you may need to upgrade. Or it could be the result of another site on the same server.

You should check with your host to see if they can see where the problem is. This might also help: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html

Edit: assuming spaceamigos.com is your site, you have a very long load time for pages, but only for the PHP side. ie static files are being served OK. You should try disabling some plugins and check if one of those is causing high load on your server.

Edit2: some more things to try.

Set the config option QA_OPTIMIZE_LOCAL_DB to true, and QA_OPTIMIZE_DISTANT_DB to false. This will run several smaller queries instead of one big one, which should be more efficient, assuming MySQL is on the same server.

Set QA_ALLOW_UNINDEXED_QUERIES to false.

You could also try some of the new performance enhancements that will be added in v1.8. In qa-base.php, replace the function qa_to_override with this:

    function qa_to_override($function)
    {
        global $qa_overrides, $qa_direct;

        // handle most common case first
        if (!isset($qa_overrides[$function])) {
            return null;
        }

        if (strpos($function, '_override_')!==false) {
            qa_fatal_error('Override functions should not be calling qa_to_override()!');
        }

        if (@$qa_direct[$function]) {
            unset($qa_direct[$function]); // bypass the override just this once
            return null;
        }

        return $qa_overrides[$function];
    }

In app/users.php, replace qa_session_var_suffix with this:

        function qa_session_var_suffix()
        {
            if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }

            global $qa_session_suffix;

            if (!$qa_session_suffix) {
                $prefix=defined('QA_MYSQL_USERS_PREFIX') ? QA_MYSQL_USERS_PREFIX : QA_MYSQL_TABLE_PREFIX;
                $qa_session_suffix = md5(QA_FINAL_MYSQL_HOSTNAME.'/'.QA_FINAL_MYSQL_USERNAME.'/'.QA_FINAL_MYSQL_PASSWORD.'/'.QA_FINAL_MYSQL_DATABASE.'/'.$prefix);
            }

            return $qa_session_suffix;
        }

Those are the two biggest performance increases.

 

by
I updated my answer with some more things to try.

How many visitors/pageviews are you getting per day?
by
Thank you, Scott.  I'll try to make the changes.
Before the slowness problems began, I had 60,000 pageviews per day. Now my site has fewer than 20,000 pageviews per day and nearly 50,000 unique visitors per month.
by
Scott, you received my message?
I made a proposal for you.
by
Ok I confirm these patches work great...
I used to open 5 question to edit as admin that slows down my site extremely, I just tested with 20 question edit at same time as admin, did not do anything... I will keep testing tomorrow when the site is under heavy load...
...