[CentOS] Help, PHP/Mysql connections are so slow.

Mon Jun 9 11:05:05 UTC 2008
Peter Farrell <peter.d.farrell at gmail.com>

If the database is on a different server.
and the CLI access to mysql is normal.
and other php / apache instances can access the database;

then it has to be either
a problem with apache <--> php communication
or a problem with php <--> mysql communication.

Write  a test query in php and execute at the command line on this
server and see what output you get.

I think the previous poster that recommended the DNS investigation
might have been on to something as well.
That 20-30 seconds could be name failure resolution, etc. Worth
looking at. In your phpadmin are you giving the FQDN or the IP
address?
I've many times forgotten to add a new default route w/ multi-homed machines.
The DNS explanation would make sense as well if nothing (as you say)
is being logged as errors in any of your log files.
The delay could be purely DNS related.

Check your httpd:
ldd /path/to/httpd
for the libs compiled with httpd.

# httpd -l
for the moduled compiled into httpd.

cat your httpd.conf and double check your php5 module is included as well.

Really take a minute as well to check your php options.

# php -i

And double check your PATHS and MYSQL_HOME and MYSQL_BIN.

With linux it's always something bitty like this that can screw you up.

-Peter




2008/6/9 Pro Green European <pro_green_european at yahoo.com>:
> The query log on the database server tells me that there are around 20-30 seconds between each data request from the webserver to the database server. Accessing the same database from another server, Apache/CGI/Mysql or even through the mysql command line is fast, and there are no 20-30 sec delays.
>
> Apache & PHP are the default x86-64 rpm packages that comes with CentOS 5.1:
>
> httpd-devel-2.2.3-11.el5_1.centos.3
> httpd-2.2.3-11.el5_1.centos.3
> httpd-manual-2.2.3-11.el5_1.centos.3
> httpd-devel-2.2.3-11.el5_1.centos.3
>
> php-mbstring-5.1.6-15.el5
> php-ldap-5.1.6-15.el5
> php-cli-5.1.6-15.el5
> php-gd-5.1.6-15.el5
> php-common-5.1.6-15.el5
> php-5.1.6-15.el5
> php-pdo-5.1.6-15.el5
> php-mysql-5.1.6-15.el5
> php-pear-1.4.9-4
>
> The php.ini file is located in the /etc/ folder.
>
> I also have the same identical site accessing the same database on the same mysql server, running on a CentOS4 server without any problem. Reason for switching server is that I need PHP5 support, and as the CentOS4 based server is a production server, I cannot compile PHP5 from source and use that on the server. I have It is a mystery ;)
>
> I'm starting to wonder if this is a broken hardware issue...
>
>
> Regards,
> /mysteron
>
> --- On Mon, 6/9/08, Peter Farrell <peter.d.farrell at gmail.com> wrote:
>
>> From: Peter Farrell <peter.d.farrell at gmail.com>
>> Subject: Re: [CentOS] Help, PHP/Mysql connections are so slow.
>> To: "CentOS mailing list" <centos at centos.org>
>> Date: Monday, June 9, 2008, 1:03 PM
>> If it's a table listing check your MySQL settings. How
>> have you set up
>> my.cnf? What does your slow query log tell you?
>> Have you logged into your MySQL server from another machine
>> and ran
>> queries from there? Have you enabled verbose logging for
>> PHP and
>> Apache? Are you tailing all 3 while you run the query from
>> phpadmin?
>> One of them will say something interesting.
>>
>> I think your issue smells like something in how you
>> compiled PHP  or a
>> setting in php.ini itself.
>>
>> Put a  test.php in the doc-root and see what it tells you
>> it's using.
>> (re; mysql & the php version & the location of the
>> php.ini)
>> I've done installs where I had conflicting libs from
>> both PHP and
>> MySQL. Also I get stupid locations for php.ini all the time
>> and have
>> to manaully move that file to the correct location.
>>
>> [root at altair htdocs]# cat test.php
>> <?php
>> phpinfo();
>> ?>
>> <?
>> var_dump($GLOBALS['_PHPA']);
>> ?>
>>
>> I generally compile everything when I do a similar install
>> - and give
>> explicit declarations to where the apxs is for PHP as well
>> as the root
>> mysql libraries. Check that everything is where you think
>> it is.
>>
>> *from recent installation of vtiger: (for example)
>>
>> APACHE 2
>> ====================
>> --prefix=/data/CRM/apache2 --with-mpm=prefork --enable-ssl
>> --enable-setenvif --enable-proxy --enable-proxy-http
>> --enable-so
>> --disable-charset-lite --disable-include --disable-env
>> --disable-status --disable-autoindex --disable-asis
>> --disable-negotiation --disable-actions --disable-userdir
>> --disable-alias
>> make
>> make install
>>
>> PHP 5.2.5
>> ====================
>> --prefix=/data/CRM/php-5.2.5
>> --with-zlib-dir=/data/CRM/src/rrdbuild/lb
>> --with-gd --with-png-dir=/data/CRM/src/rrdbuild/lb
>> --with-freetype-dir=/data/CRM/src/rrdbuild/lb
>> --with-jpeg-dir=/data/CRM/src/rrdbuild/lb
>> --with-imap=/data/CRM/src/rrdbuild/lb
>> --with-mysql=/usr/local/include/mysql
>> --with-apxs2=/data/CRM/apache2/bin/apxs
>> make
>> make test
>> make install
>>
>> =====================================================================
>>
>> XCACHE (this is the PHP accelerator we're using)
>>
>> *you'll have to force it to see the non-standard
>> install locations we're using.
>> ===============
>> Make a build directory:
>> mkdir xcache-build
>> cd src/xcache-build/
>> phpize --clean && phpize
>> env CPPFLAGS="-I/data/CRM/php-5.2.5/include
>> -I/data/CRM/apache2/include"
>> LDFLAGS="-L/data/CRM/php-5.2.5/lib
>> -I/data/CRM/apache2/lib" CFLAGS="-O3 -fPIC"
>> ../xcache-1.2.2/configure
>> --prefix=/data/CRM/ --enable-xcache
>> make
>> make install
>>
>> *You must re-install each time you upgrade or re-compile
>> PHP
>> make distclean && phpize --clean && phpize
>> (now continue w/ original instructions)
>>
>>
>> Locate a php.ini and copy it to
>> /data/CRM/php-5.2.5/lib/php.ini
>> Append the xcache options to this file:
>> cd ../xcache-1.2.2
>> cat xcache.ini >> /etc/php.ini
>>
>> Edit the php.ini to comply with the vtiger installation
>> notes:
>>
>> ;Your php.ini must configured with the following
>> parameters:
>>
>> ;    * safe_mode = Off
>> ;    * display_errors = On            *this is stupid. Turn
>> it off
>> after you tweak vtiger to how you like it.
>> ;    * file_uploads = On
>> ;    * register_globals = Off
>> ;    * max_execution_time = 600
>> ;    * output_buffering= On
>> ;    * memory_limit = 32M             *is 128 by default -
>> ignore
>> ;    * error_reporting = E_WARNING & ~E_NOTICE
>> ;    * allow_call_time_reference = On
>> ;    * log_errors = Off                *again, stupid -
>> ignore
>> ;    * short_open_tag= On            *again, why the code
>> is a bit
>> crap in vtiger that we'd need to enable this.
>> ;    * extension=php_gd2.dll            *ignore - it's
>> for windows
>> ;    * extension=php_imap.dll            *ignore - it's
>> for windows
>> ;    * extension=php_mysql.dll            *ignore -
>> it's for windows
>> ;    * extension=php_mysqli.dll            *ignore -
>> it's for windows
>>
>> ===========================================================
>>
>>
>> -Peter
>>
>>
>>
>>
>>
>>
>>
>> 2008/6/9 Pro Green European
>> <pro_green_european at yahoo.com>:
>> > Hi.
>> >
>> >> Have you tried other protocols? Is it really only
>> http
>> >> transfers that are slow?
>> >
>> > Yes. Ftp works perfectly, and regular http with
>> cgi/perl connections to the same database server works
>> perfectly. Also rendering of standard HTML works as it
>> should. It is only when a scripted site uses PHP/Mysql the
>> connection to the server takes forever.
>> >
>> >> Have you tried pinging 100 times and see if you
>> get dropped
>> >> packets?
>> >
>> > 0% packet loss
>> >
>> >> Are there any errors from the netcards showing up
>> in log
>> >> files?
>> >
>> > None.
>> >
>> > I am really baffeled with this problem. I have no idea
>> what to do next. Have enabled server-status in Apache and
>> when the scripted site is being access the cpu load is
>> around 2.5%.
>> >
>> >
>> > Regards,
>> > /mysteron
>> >
>> >
>> > --- On Mon, 6/9/08, Bent Terp <bent at nagstrup.dk>
>> wrote:
>> >
>> >> From: Bent Terp <bent at nagstrup.dk>
>> >> Subject: Re: [CentOS] Help, PHP/Mysql connections
>> are so slow.
>> >> To: "CentOS mailing list"
>> <centos at centos.org>
>> >> Date: Monday, June 9, 2008, 10:42 AM
>> >> > communicate with MySQL5. On this server,
>> PHP/Mysql
>> >> connections are dead
>> >> > slow and unresponsive. It takes sometimes up
>> to a
>> >> minute to list tables
>> >> > in phpmyadmin for example.
>> >>
>> >> Have you tried other protocols? Is it really only
>> http
>> >> transfers that are slow?
>> >>
>> >> Have you tried pinging 100 times and see if you
>> get dropped
>> >> packets?
>> >>
>> >> Are there any errors from the netcards showing up
>> in log
>> >> files?
>> >>
>> >> BR Bent
>> >> _______________________________________________
>> >> CentOS mailing list
>> >> CentOS at centos.org
>> >> http://lists.centos.org/mailman/listinfo/centos
>> >
>> >
>> >
>> > _______________________________________________
>> > CentOS mailing list
>> > CentOS at centos.org
>> > http://lists.centos.org/mailman/listinfo/centos
>> >
>> _______________________________________________
>> CentOS mailing list
>> CentOS at centos.org
>> http://lists.centos.org/mailman/listinfo/centos
>
>
>
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> http://lists.centos.org/mailman/listinfo/centos
>