27 messages in ru.sysoev.nginxRe: spawn-fcgi-1.6.0rc1-r16 prerelease]
FromSent OnAttachments
Cliff WellsFeb 18, 2009 6:36 pm 
mikeFeb 18, 2009 10:25 pm 
Phillip B OldhamFeb 19, 2009 1:40 am 
mikeFeb 19, 2009 2:04 am 
Cliff WellsFeb 19, 2009 3:14 am 
mikeFeb 19, 2009 8:09 am 
Jim OhlsteinFeb 19, 2009 8:31 am 
Icy --Mar 8, 2009 11:09 am 
mikeMar 8, 2009 12:00 pm 
Icy --Mar 8, 2009 12:39 pm 
mikeMar 8, 2009 1:17 pm 
Jim OhlsteinMar 8, 2009 1:21 pm 
Icy --Mar 8, 2009 3:01 pm 
Grzegorz NosekMar 8, 2009 3:09 pm 
mikeMar 8, 2009 3:16 pm 
mikeMar 8, 2009 3:18 pm 
Grzegorz NosekMar 8, 2009 3:30 pm 
Grzegorz NosekMar 8, 2009 3:31 pm 
Icy --Mar 8, 2009 3:38 pm 
Grzegorz NosekMar 8, 2009 3:39 pm 
Icy --Mar 8, 2009 4:05 pm 
mikeMar 8, 2009 4:20 pm 
Icy --Mar 8, 2009 4:45 pm 
mikeMar 8, 2009 5:16 pm 
Grzegorz NosekMar 8, 2009 11:27 pm 
Grzegorz NosekMar 8, 2009 11:41 pm 
mikeMar 9, 2009 12:25 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: spawn-fcgi-1.6.0rc1-r16 prerelease]Actions...
From:Icy -- (lis@ruby-forum.com)
Date:Mar 8, 2009 3:01:39 pm
List:ru.sysoev.nginx

mike wrote:

So I can launch with a single command line

spawn-fcgi -some -options some-other-cgi-stuff-than-php here

and it will allow more than one concurrent connection?

That is up to the application, not spawn-fcgi. It could do threading, have multiple worker processes or whatnot.

I think the latest version might have mentioned supporting something, but I'd be looking at leveraging it to manage fcgiwrap, and I don't want to have to launch one spawn-fcgi command for every individual amount of requests I intend.

i.e.

I want a pool of fcgiwrap resources available using a single command line for a specific website. I want to give it a specific user/group ID to run as. (or anything else like fcgiwrap, basically I want to run non-PHP CGI scripts (perl, compiled CGI) from nginx)

It sounds like the latest updates to spawn-fcgi might help this become a reality. Did you say you maintained the project? Have any command line options that I can try to make this happen? I want to be able to support say, 10 concurrent requests. In PHP that would translate roughly to 10 php children (-C 10 I think?)

Do I have to do this 10 times: spawn-fcgi -a -b -c /usr/local/bin/fcgiwrap

Or can I launch it just once with some parameters?

I have never used fcgiwrap and in fact just discovered it. As I understand it, it uses fcgi to then spawn cgi processes? Why not code the application as a FastCGI one? That would be way faster in terms of performance. The only reason you would need that is to either run CGI apps on a remote host or to overcome the lack of cgi support in nginx.

Jim Ohlstein wrote:

The biggest problem is still that spawn-fcgi is known to crash and hang - separate issue, I know. There are lots of references on it. Consult Professor Google and you'll find many. I'd start with http://www.google.com/search?q=spawn-fcgi+crash and http://www.google.com/search?q=spawn-fcgi+hang. I haven't tried using it in a year or more. Perhaps it's improved in that regard but I'm reluctant to use it in a production environment when php-fpm is just about bullet-proof as it gets. Of course that assumes that development of php-fpm continues as it's presently a one man show AFAIK. Now I'm aware that this doesn't happen on every system but it happens a lot and it has happened to me.

And all you find via google are invalid bugreports. Saying something can be found on the internet doesn't make it true. Again I think you guys completely misunderstand the role of spawn-fcgi. It sets up some sockets and spawns a processes. That's basically it. It is in NO way involved with handling the requests. If something crashes or hangs then that's the fault of the application. PHP in this case (and it has been known to do so in past releases). This is not spawn-fcgi's fault. After spawning the application, spawn-fcgi is no more around normally. How can something that is not running cause such problems?

Aside from that, even though fcgiwrap is capable of running several processes simultaneously, spawn-fcgi will only start one. I may be wrong but I believe that's an inherent limitation of spawn-fcgi's command options.

You can of course (as I said earlier) start multiple processes by calling spawn-fcgi multiple times (with different command options for the address). But even a single process could handle many concurrent requests (see lighty). There are many ways (like I wrote before too) to do so: threads, child processes, multiplexing... Telling spawn-fcgi to spawn like 10 processes is not possible because how should it know which addresses to bind to?