Our website today received an increase in users (about double our normal load) and our system has started to slow down. Our MySQL sits on it's own physical box, and we've started receiving these errors in our logs;
[Mon Jul 18 15:30:07 2011] [error] [client 2.221.255.55] PHP Warning: mysql_select_db() [<a href='function.mysql-select-db'>function.mysql-select-db</a>]: A link to the server could not be established in /home/livesite/_util.inc on line 301, referer:
The MySQL box is fine, and responds quite happily to our development server, but our live server, as of this load increase, is seeing this error message.
Does anybody know why PHP would just stop communication with MySQL on another box?
Your connection limit is likely too low. Usually you get a different error, but I wouldn't be surprised if this were the problem:
http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
I suspect that line 301 is calling some function, such as mysql_real_escape_string(), which explains the error. There is probably a different error on connect, such as "too many connections", but that won't be in your logs if your connect line has an # in front of it.
Maybe you shuold look at your PHP INI file for mysqli.max_persistent and the like ?
Maybe your logic connects without disconnecting - fast enough ?
Related
I have a WordPress web site running on Windows Server 2012 R2 via IIS and PHP 7.1.1. Everything works well, except once or twice a day, the site returns a white screen (HTTP 500) and the error log shows the following errors:
[17-Jan-2019 15:29:15 UTC] PHP Warning: require_once(D:\Webs\www.WebS): failed to open stream: No such file or directory in D:\Webs\www.WebSite.com\wp-content\plugins\captcha\bws_menu\bws_include.php on line 91
[17-Jan-2019 15:29:15 UTC] PHP Fatal error: require_once(): Failed opening required 'D:\Webs\www.WebSite.com/wp-content/plugins/captcha/bws_menu/bws_functions.php' (include_path='.;C:\php\pear') in D:\Webs\www.WebSite.com\wp-content\plugins\captcha\bws_menu\bws_include.php on line 91
FYI - I have changed the path off of D:\Webs to show a fictitious website name.
Notice that the path is cut off. Sometimes the path is cut off in different places. Sometimes it's to completely different files for completely different plugis. Sometimes it's even complaining about WordPress core. The only thing consistent is that once this happens, the exact same path is the failure until I recycle the App Pool. When it happens again, it's a different file, but complains about the same file until I recycle the App Pool.
What gives?
The only workaround I have is to recycle the app pool or set IIS to automatically recycle on a schedule. Neither of these are good long term solutions.
I should also note that this server has about 10 other WordPress sites running. They each have their own App Pool and run from their own folder. They never, ever have this problem.
Also, resources on the server are excellent. At the highest traffic times, the CPU's are less than 50% and there is less than 75% memory utilization. There are also many gigabytes of free disk space on the system volume as well as the data volume the site runs from.
Please don't reply with "don't run PHP or WordPress on Windows/IIS." That's not helpful - I cannot change the environment and I need to figure out the solution.
I have 100% control of the server environment and can debug/troubleshoot as needed. So if there's any way to get more information, please let me know!
One of the php sites hosted on my shared linux/Apache server keeps getting random 500 Internal Server Error, while other sites never encounter any issues. The server error log shows:
Handler for fastcgi-script returned invalid result code 1
Connection reset by peer: FastCGI: comm with server "/usr/lib/cgi-bin/php5-fcgi" aborted: read failed
Is this an application specific issue or server configuration issue? Thanks!
It seems your script is over max_execution_time. Maybe 360s
It could be very useful to get which function is consuming most of the execution time. You can use the slow log of php-fpm.
In your pool file (/etc/php5/fpm/pool.d/www.conf) look for:
'slowlog', and add a log file like: '/var/log/php-fpm/www.log.slow'
'request_slowlog_timeout', and add a time like: '10s'
Restart php-fpm, tailf this file and maybe you could trace your huge function.
I'm running Moodle on PHP 5.5.7 64bit nts on Windows Server 2008 R2 with MySQL 5.5.36.
Up until two days ago, there were no problems. To deal with Xdebugger being such a memory hog, an extra CPU and more memory was assigned to the virtual machine. The Windows license was also activated. The entire vm was rebooted. (I had restarted the machine before prior to this, with no problems).
I am now receiving the following warning when I access any page on the site:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
in C:\inetpub\wwwroot\moodle\lib\dml\mysqli_native_moodle_database.php on line 375
I created a test php page that simply consists of the following:
$mysqli = new mysqli("127.0.0.1", "moodleuser", 'xxxx', "moodle", 3306);
if ($result = $mysqli->query("SELECT * from mdl_user limit 10")) {
echo "Select returned $result->num_rows";
} else {
echo "Error";
}
$mysqli->close();
I receive the following output:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.in C:\inetpub\wwwroot\moodle\info.php on line 17
PHP Warning: mysqli::query(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 18
PHP Warning: mysqli::close(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 24
I have checked that "127.0.0.1 localhost" exists in my hosts file and that the IPv6 "::1" line has been commented out.
I have also attempted to use "localhost" but same problem.
The bizarre thing is that if I refresh the page, occasionally, and completely at random, the warning doesn't occur and the correct output is given.
I have attempted to disable the warnings, but php appears to be ignoring me. Also, disabling the warning is not exactly ideal.
Any ideas?
EDIT:
So after much pain staking back and forths between PHP and MySQL and IIS, it looks like (once again) it was php.ini to blame.
To be honest, I cant even tell you which setting was the problem - but I changed all possible timeout related settings in php.ini to a large number (10000 or -1 depending on the setting), as well as the connection_timeout for mysql in my.ini.
I am still yet to figure out which one was causing the problem, but will edit this post if I ever do.
So after much pain staking back and forths between PHP and MySQL and IIS, it looks like (once again) it was php.ini to blame.
To be honest, I cant even tell you which setting was the problem - but I changed all possible timeout related settings in php.ini to a large number (10000 or -1 depending on the setting), as well as the connection_timeout for mysql in my.ini.
I am still yet to figure out which one was causing the problem, but will edit this post if I ever do.
The server is running apache2, and when trying to load a webpage it can take up to 5 minutes to load the homepage. All internal pages seems fine however. Checking the Error Logs I see the following:
[warn] (103)Software caused connection abort: mod_fcgid: ap_pass_brigade failed in handle_request function
Can someone please tell me how to fix this?
Not an answer but can you install another webserver? Nginx and lighttpd are good products, open source, 1000x times faster and easier to setup.
if you use mod_fcgid try change MaxRequestsPerProcess for more request
I'm getting what looks like rather serious database errors in my CodeIgniter application. In the log file it says:
User anders already has more than 'max_user_connections' active connections
And there are several hundred of those lines... I've read a bit by Googling, and some suggested that it was because you didn't close the connection after it was used, but others said that this was nonsense, and that the connection was automatically closed (which is what I read in the docs too).
Also, later in the log file, I have these error messages:
ERROR - 2011-10-12 10:50:19 --> Severity: Warning --> file_get_contents(http://localhost/expertinfo/error/error_general) [function.file-get-contents]: failed to open stream: HTTP request failed! /Applications/MAMP/htdocs/expertinfo/application/errors/error_general.php 4
This seems to have something to do with the fact that I'm using a custom error page by using
echo file_get_contents($config['base_url'] . 'error/error_db');
to redirect to a custom page.
Finally, I'm also getting:
ERROR - 2011-10-12 10:52:19 --> Severity: Warning --> mysql_pconnect() [function.mysql-pconnect]: Can't connect to MySQL server on 'mydb24.surftown.se' (4) /Applications/MAMP/htdocs/expertinfo/system/database/drivers/mysql/mysql_driver.php 88
In these last two, I don't understand what the local path is doing there (The path to my CodeIgniter app on my computer). I mean this is a part of the system folder and the one on the remote server should be used, right? I have the database set up as the remote database, and I don't have any local paths as far as I know....
So why does this happen, and what can I do about it?
Please help, this seems rather urgent. I'm a bit of a newbie to both php and CodeIgniter too, so a clear and simple answer would be greatly appreciated!
Local path as I see shows you file where your error happened, because your driver /Applications/MAMP/htdocs/expertinfo/system/database/drivers/mysql/mysql_driver.php possible on it's 88 line contain connect() function and it raise an exception
The problem is with your mydb24.surftown.se remote server, you should check your access credentials, etc. to find what exactly happened
Just an FYI, mysql_pconnect is usually a bad practice on shared hosting (you can see why here:http://stackoverflow.com/questions/1830830/advantages-disadvantages-of-pconnect-option-in-codeigniter)
You might just disable pconnect on application/config/database.php and see the error going away as your connections will be realluy lower.
For the quote: "mysql_pconnect is usually a bad practice on shared hosting".
I changed to use mysql_connect. It made no difference.