Standalone_httpd

Hi Guys

Does anybody know whether standalone_httpd is meant for multiple connections.
I am accessing it via 5 machines, and every now and then it dies, (I have put it in inittab so it restarts itself)
also if somebody is doing a bulk update, nobody else can access it.

I do like the speed of standalone_httpd for RT3 compared to Apache, it is 10x faster with standalone_httpd!

RHL9 Perl 5.8.5 RT3.2.1

Regards
Peter

Does anybody know whether standalone_httpd is meant for multiple
connections.
I am accessing it via 5 machines, and every now and then it dies, (I
have put it in inittab so it restarts itself)
also if somebody is doing a bulk update, nobody else can access it.

It is really intended for single person desktop use, or development of
RT use, really. I personally use it for testing and debugging DB
issues on a copy of my live database.

I do like the speed of standalone_httpd for RT3 compared to Apache, it
is 10x faster with standalone_httpd!

You must have set something up funny then.

Vivek Khera, Ph.D.
+1-301-869-4449 x806

smime.p7s (2.42 KB)

Since the “standalone_httpd” application just popped up with the latest
RT install (3.4.2), I was wondering… can this be safely run as the
"apache" or “rt” user as opposed to running it as root?

-Rich

Since the “standalone_httpd” application just popped up with the latest
RT install (3.4.2), I was wondering… can this be safely run as the
“apache” or “rt” user as opposed to running it as root?

It can run as anybody who can get at RT’s config files and bind to the
port you want to run it on. Do note that it’s been there since…RT 3.2?
Quite a while.

Jesse

Since the “standalone_httpd” application just popped up with the latest
RT install (3.4.2), I was wondering… can this be safely run as the
“apache” or “rt” user as opposed to running it as root?

-Rich


The rt-users Archives

Be sure to check out the RT Wiki at http://wiki.bestpractical.com

It should be OK.

-Todd

Since the “standalone_httpd” application just popped up with the latest
RT install (3.4.2), I was wondering… can this be safely run as the
“apache” or “rt” user as opposed to running it as root?

It can run as anybody who can get at RT’s config files and bind to the
port you want to run it on. Do note that it’s been there since…RT 3.2?
Quite a while.

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

Les Mikesell
les@futuresource.com

Since the “standalone_httpd” application just popped up with the latest
RT install (3.4.2), I was wondering… can this be safely run as the
“apache” or “rt” user as opposed to running it as root?

It can run as anybody who can get at RT’s config files and bind to the
port you want to run it on. Do note that it’s been there since…RT 3.2?
Quite a while.

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

Unless things have changed, standalone is single threaded. That means
it can only process one request at a time. If someone runs a long
query everyone else will be waiting.

-Todd

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

The standalone httpd server definitely makes it easier to
manage/maintain. A simple ProxyPass and ProxyPassReverse pair of rules
handles things quite nicely.

Unless things have changed, standalone is single threaded. That means
it can only process one request at a time. If someone runs a long
query everyone else will be waiting.

Unfortunately, this is true. It is single threaded, and it can be a
huge performance hit.

-Rich

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

Unless things have changed, standalone is single threaded. That means
it can only process one request at a time. If someone runs a long
query everyone else will be waiting.

Unfortunately, this is true. It is single threaded, and it can be a
huge performance hit.

Although… just a thought here… if it were written so as to be a
forking web server (fork off a standalone process to handle the current
request then exit upon completion), with a limit on the number of
currently running forks (so as to prevent the server from being
overloaded too easily), it would probably be comparable in performance
without the complexity…

-Rich

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

Unless things have changed, standalone is single threaded. That means
it can only process one request at a time. If someone runs a long
query everyone else will be waiting.

Unfortunately, this is true. It is single threaded, and it can be a
huge performance hit.

Although… just a thought here… if it were written so as to be a
forking web server (fork off a standalone process to handle the current
request then exit upon completion), with a limit on the number of
currently running forks (so as to prevent the server from being
overloaded too easily), it would probably be comparable in performance
without the complexity…

Forking a big process like perl+application on every hit would be
pretty expensive too. I think what it would really need is to
pre-fork 3 or 4 processes if that can be done without making it
just as complicated as fastgci.

Les Mikesell
les@futuresource.com

Is this efficient enough to use as the standard way of running RT? It
might eliminate a lot of installation problems and if you wanted it
as a virtual host you could easily run on an odd port number and play
some tricks with Apache’s ProxyPass or RewriteRules to hide the fact
that it isn’t the same web server.

Unless things have changed, standalone is single threaded. That means
it can only process one request at a time. If someone runs a long
query everyone else will be waiting.

Unfortunately, this is true. It is single threaded, and it can be a
huge performance hit.

Although… just a thought here… if it were written so as to be a
forking web server (fork off a standalone process to handle the current
request then exit upon completion), with a limit on the number of
currently running forks (so as to prevent the server from being
overloaded too easily), it would probably be comparable in performance
without the complexity…

-Rich

I talked to Jesse about this and he said that when you start
pre-forking and the like you very closely approach the speed
of Apache. Although the perl solution would be easier to get
up and running… I would like to see how it works.

-Todd

I talked to Jesse about this and he said that when you start
pre-forking and the like you very closely approach the speed
of Apache. Although the perl solution would be easier to get
up and running… I would like to see how it works.

I’m afraid I must have misspoken. In my load testing, even with preforking,
it wasn’t nearly as fast as Apache. Note that HTTP::Server::Simple
includes functionality to use a Net::Server based TCP server, so this
should be pretty easy to test out. (And I’d love to see it.)

Similar to what Todd said, the benefits would be an easier solution to
get things up and running.

I’ve started reading up on some of the docs regarding
HTTP::Server::Simple, Net::Server, Net::Server::PreFork, and
HTTP::Server::Simple::Mason, specifically looking at the functionality
of using a Net::Server based TCP server (that you referenced). I’m not
sure if I have a full grasp on the HTTP::Server::Simple API for defining
"net_server", though…

-Rich

Jesse Vincent wrote:

In my load testing, even with preforking, it wasn’t nearly as fast as
Apache. Note that HTTP::Server::Simple includes functionality to use a
Net::Server based TCP server, so this should be pretty easy to test
out. (And I’d love to see it.)

You might also check out thttpd. I wrote a small howto for getting
Mason running under thttpd, which is substantially simpler to
configure than Apache:

http://chrissnell.com/software/thttpd_mason/

Chris