> > For me these numbers are great and I plan on moving to 2.0 as soon as > I can for my personal stuff. This works for me because I am only > getting about 1 *request* per second, but at work we need to be able > to deal with on average 18750 *page views* per second (1.62 billion > page views per day on average). Of course this is spread across > multiple machines, but you also need to take into consideration the > number of machines needed, cost of machines, cost to maintain the > software on all those machines, etc. >
That are really a lot of hits... Did you use any cacheing of the output with Mason and/or Embperl? If for examples headers or footers are more or less static Mason and Embperl are able to cache the generated output, so the Perl code has to be run only once. If the header and/or footer is a really static page, then you should use the syntax "Text" in Embperl 2,this will speed things up again and Embperl 2 use a concept of providers, so it is very simple possible to write a pure text provider which will speed up inclusion of static files even more, because no Perl code will be involved anymore. Another question: Did you use Embperl::Object? Embperl::Object currently does some more stat calls then necessary, which slows it down. That is something that I like to optimize before the final 2.0 release. As you say the slow down for more concurrent connections, is because of the memory usage. Perl itself uses a lot of memory, so all Perl based solutions will need more memory. Embperl uses some more memory than Mason, to provide features like auto form fill, dynamic tables etc. The main point to consider here is Apache 2.0 and mod_perl 2.0. The problem with Apache 1 is, that every concurrent connection uses it's own Apache process, so every connection needs the same amount of memory. With Apache 2.0 you can run it as threads, where the threads share the memory that the Perl code takes up. If correct configured this will safe very much memory. Basicly PHP and Perl solutions are about the same speed at 25 concurrent connections. At this number of concurrent connections, the memory isn't a factor, because there is enough memory to hold all 25 processes in physical memory. So as the concurrent connections increases at some point the machine runs out of physical memory and beginns to swap. As you already mentioned that's the reason why Perl solution doesn't scale so well, but if we consider Apache 2.0, which will reduce the memory footprint, the Perl solutions may come into play again. Apache 2.0 is finaly released some weeks ago, mod_perl release candidate is currently under heavy testing. One part of the improvement from b5 to b6 of Embperl was to make the internal data strcuture ready for Apache/mod_perl 2.0 and threading. Embperl currently doesn't compile with Apache 2.0, but if necessary we could get this working in a short time frame. You say you personaly prefer Embperl, but PHP is faster for now. As you surely know, you not only have to consider performance, but also how much effort it takes to write and maintain an application. Of course when you have so much hits, performance is a really important, but if you feel Perl/Embperl is better for writing your application and if we could get nearly the same performance with using Apache 2.0 threads, then maybe using Embperl is a possibility again? As I said Embperl currently not compiles with Apache 2.0 and I have put a lot of time into the changes from b5 to b6, so for now I have to do some other jobs to earn some money, before I can again put some more time into Embperl. But in case you would like to use Embperl and Apache 2.0 and need it in a short time frame, I can offer you to do it as a consulting job for you. In this case you we could get it working quickly. (there are also some other optimizations which could be done, but this will not have the same amount of improvment as using threads) Gerald P.S. I happy that you like Embperl and use it already for such a long time :-) P.S.S. Do you know what the PHP Accelerator does? Does it some kind of output caching? I am not a PHP guru, so I have to ask. If it is some kind of caching, maybe we can do a similar thing for Embperl? ------------------------------------------------------------- Gerald Richter ecos electronic communication services gmbh Internetconnect * Webserver/-design/-datenbanken * Consulting Post: Tulpenstrasse 5 D-55276 Dienheim b. Mainz E-Mail: [EMAIL PROTECTED] Voice: +49 6133 925131 WWW: http://www.ecos.de Fax: +49 6133 925152 ------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]