[newbie] Small question about FastCGI [message #179412] |
Tue, 23 October 2012 11:12 |
Gilles Ganault
Messages: 27 Registered: September 2010
Karma: 0
|
Junior Member |
|
|
Hello
I just installed Lighttpd and mod_fastcgi to improve performance when
running PHP scripts over CGI.
Am I correct in understanding the following about what mod_fastcgi
does:
1. loads severals instances of the PHP interpreter, each in its own
process (hence the numerous instances of /usr/bin/php5-cgi in "ps aux"
and the "php.socket-" pseudo-files in /tmp)
2. translates between HTTP requests/responses and the PHP scripts
3. does nothing about the PHP scripts, which are loaded, parsed,
compiled, ran, and unloaded every time they are called
?
I'm especially concerned about the last point: If I make a lot of
calls to the database, does it mean that FastCGI doesn't provide
persistent connections to it, so I'll have to investigate other ways
to avoid opening/closing DB connections every time? Or is
opening/closing DB connections a non-issue and the main issue is
actual commands sent to the DB?
Thank you.
|
|
|
Re: [newbie] Small question about FastCGI [message #179414 is a reply to message #179412] |
Tue, 23 October 2012 13:12 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 10/23/2012 7:12 AM, Gilles wrote:
> Hello
>
> I just installed Lighttpd and mod_fastcgi to improve performance when
> running PHP scripts over CGI.
>
> Am I correct in understanding the following about what mod_fastcgi
> does:
> 1. loads severals instances of the PHP interpreter, each in its own
> process (hence the numerous instances of /usr/bin/php5-cgi in "ps aux"
> and the "php.socket-" pseudo-files in /tmp)
> 2. translates between HTTP requests/responses and the PHP scripts
> 3. does nothing about the PHP scripts, which are loaded, parsed,
> compiled, ran, and unloaded every time they are called
> ?
>
> I'm especially concerned about the last point: If I make a lot of
> calls to the database, does it mean that FastCGI doesn't provide
> persistent connections to it, so I'll have to investigate other ways
> to avoid opening/closing DB connections every time? Or is
> opening/closing DB connections a non-issue and the main issue is
> actual commands sent to the DB?
>
> Thank you.
>
Why do you think you need persistent connections? Do you have a
performance problem you've traced down to connecting to the database?
Persistent connections can improve performance in *very heavily* used
websites (i.e. hundreds of hits per second), but also lock system
resources even when the connections are not being used.
In most cases persistent connections will have little or no impact on
performance, and can actually degrade performance (as well as causing
other problems like having left-over data from the previous usage of the
connection).
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: [newbie] Small question about FastCGI [message #179415 is a reply to message #179412] |
Wed, 24 October 2012 05:06 |
Michael Vilain
Messages: 88 Registered: September 2010
Karma: 0
|
Member |
|
|
In article <0suc885dhh0buidnju0h77oqejlb8q22pa(at)4ax(dot)com>,
Gilles <nospam(at)nospam(dot)com> wrote:
> Hello
>
> I just installed Lighttpd and mod_fastcgi to improve performance when
> running PHP scripts over CGI.
>
> Am I correct in understanding the following about what mod_fastcgi
> does:
> 1. loads severals instances of the PHP interpreter, each in its own
> process (hence the numerous instances of /usr/bin/php5-cgi in "ps aux"
> and the "php.socket-" pseudo-files in /tmp)
> 2. translates between HTTP requests/responses and the PHP scripts
> 3. does nothing about the PHP scripts, which are loaded, parsed,
> compiled, ran, and unloaded every time they are called
> ?
>
> I'm especially concerned about the last point: If I make a lot of
> calls to the database, does it mean that FastCGI doesn't provide
> persistent connections to it, so I'll have to investigate other ways
> to avoid opening/closing DB connections every time? Or is
> opening/closing DB connections a non-issue and the main issue is
> actual commands sent to the DB?
>
> Thank you.
According to http://php.net/manual/en/function.mysql-pconnect.php you
can only do persistent connections with mod_php. This is because the
apache server stays around and can reuse the mysql connection. With
FastCGI, this doesn't happen. Apache forks php5-cgi which dies after
the script is completed.
Rethink your requirement for persistent database connections or use
mod_php instead of FastCGI.
--
DeeDee, don't press that button! DeeDee! NO! Dee...
[I filter all Goggle Groups posts, so any reply may be automatically ignored]
|
|
|
Re: [newbie] Small question about FastCGI [message #179418 is a reply to message #179415] |
Wed, 24 October 2012 18:49 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
Michael Vilain wrote:
> Gilles <nospam(at)nospam(dot)com> wrote:
>> I just installed Lighttpd and mod_fastcgi to improve performance when
>> running PHP scripts over CGI.
>>
>> Am I correct in understanding the following about what mod_fastcgi
>> does:
>> 1. loads severals instances of the PHP interpreter, each in its own
>> process (hence the numerous instances of /usr/bin/php5-cgi in "ps aux"
>> and the "php.socket-" pseudo-files in /tmp)
>> 2. translates between HTTP requests/responses and the PHP scripts
>> 3. does nothing about the PHP scripts, which are loaded, parsed,
>> compiled, ran, and unloaded every time they are called
>> ?
>>
>> I'm especially concerned about the last point: If I make a lot of
>> calls to the database, does it mean that FastCGI doesn't provide
>> persistent connections to it, so I'll have to investigate other ways
>> to avoid opening/closing DB connections every time? Or is
>> opening/closing DB connections a non-issue and the main issue is
>> actual commands sent to the DB?
>>
>> Thank you.
>
> According to http://php.net/manual/en/function.mysql-pconnect.php you
> can only do persistent connections with mod_php.
You did read there "Use of this extension is discouraged", did you not?
> This is because the apache server stays around and can reuse the mysql
> connection.
Do you read what you reply to? The OP is not using Apache, they are using
Lighthttpd.
> With FastCGI, this doesn't happen. Apache forks php5-cgi
> which dies after the script is completed.
No, "FastCGI uses persistent processes to handle a series of requests."
They are not owned by the web server, but by the FastCGI server. [1]
> Rethink your requirement for persistent database connections or use
> mod_php instead of FastCGI.
Or maybe you want to get yourself informed before you give advice?
[1] <http://en.wikipedia.org/wiki/FastCGI> pp.
PointedEars
--
realism: HTML 4.01 Strict
evangelism: XHTML 1.0 Strict
madness: XHTML 1.1 as application/xhtml+xml
-- Bjoern Hoehrmann
|
|
|
|