Re: mod_ruby on Apache for Windows 2.2.17
Dear Eric Thank you for your reply. On Fri, Feb 11, 2011 at 12:51 PM, Eric Covener cove...@gmail.com wrote: On Fri, Feb 11, 2011 at 2:25 AM, Zeno Davatz zdav...@gmail.com wrote: I am trying to debug mod_ruby to load in Apache for Windows. So far Apache for Windows does start with mod_ruby.so but it seems that httpd does not start correctly with mod_ruby enabled in Apache for Windows. The steps I took to compile mod_ruby for Apache for Windows 2.2.17 with MinGW are here: you should eliminate mingw from the equation if you're mostly interested in the ruby side. The reason why I need MinGW is because Ruby was compiled with MinGW. I did compile mod_ruby with nmake on Windows. Works fine and Apache starts as well if I install Ruby via nmake as well. Not a problem. But I am dependent on the Oniguruma-patch and that patch can only be applied with MinGW at the moment. Also Ruby compiled with MinGW is faster then when compiled with nmake. Are you a Windows or a Linux User? I am asking because I think I am not that far away. I just need to understand the workings for Apache in Windows a bit better - as mod_ruby does compile with MinGW with the changes I pointed out. So if you can point me towards somewhere to debug mod_ruby for Apache on Windows so that I get my normal Server-Info as on Linux for: Request Phase Participation. I really think it is the Content Handlers that do not work. So there must be something different there in Apache for Windows compared to Apache for Linux. Best Zeno PS: The Ruby-Windows Installer is compiled with MinGW. And that is a great installer.
Re: mod_ruby on Apache for Windows 2.2.17
Dear Eric Thank you for your reply. On Fri, Feb 11, 2011 at 1:37 PM, Eric Covener cove...@gmail.com wrote: I really think it is the Content Handlers that do not work. So there must be something different there in Apache for Windows compared to Apache for Linux. Not in every other module that implements a handler, or even the one you care about when compiled with VS -- seems like some kind of ABI or tools problem not a problem with the module's src code. Say that again please. So where should I start looking for next? How do you recommend I should go about to debug this problem from the ABI point of view. Which tools do you mean? BTW: I can execute Ruby as a CGI-script without a problem with these simple VirtualHost settings (I tested it with test.rbx) NameVirtualHost *:80 VirtualHost *:80 ServerName de.oddb.win DocumentRoot C:\Ruby-1.8.6-oniguruma\lib\ruby\gems\1.8\gems\de.oddb-2.0.0\doc DirectoryIndex index.rbx #RubyAddPath 'C:/Ruby-1.8.6-oniguruma/lib/ruby/gems/1.8/gems/de.oddb-2.0.0/lib' #RubyRequire 'sbsm/trans_handler' #RubyTransHandler SBSM::ZoneTransHandler.instance Directory C:\Ruby-1.8.6-oniguruma\lib\ruby\gems\1.8\gems\de.oddb-2.0.0\doc Options ExecCGI AllowOverride None Order allow,deny Allow from all Files *.rbx #RubyHandler Apache::RubyRun.instance #SetHandler ruby-object /Files /Directory I put test.rbx into the above doc folder and it works fine. My index.rbx will not be executed because I need the SBSM Handler (internal tool). Also mod_ruby can handle a lot more RPS and is just much faster. So that is why I need mod_ruby. Best Zeno
Re: mod_ruby on Apache for Windows 2.2.17
Dear Ben Thank you for your valuable input! On Fri, Feb 11, 2011 at 1:55 PM, Ben Noordhuis i...@bnoordhuis.nl wrote: On Fri, Feb 11, 2011 at 08:25, Zeno Davatz zdav...@gmail.com wrote: I am trying to debug mod_ruby to load in Apache for Windows. So far Apache for Windows does start with mod_ruby.so but it seems that httpd does not start correctly with mod_ruby enabled in Apache for Windows. I don't have a solution for you but I would suggest to not do this (run mod_ruby on Windows, that is). Ok, I take notice of this. Apache on Windows serves all requests from a single process. Apache on Linux does not do that? Our Apache on Linux with mod_ruby sometimes has over 1'000 sessions and about 30-50 threads open. Memory can go up to 10 GB. The Ruby interpreter is not thread-safe so mod_ruby creates a Big Mutex whenever it needs to run. Thus on Windows, with its single-process model, mod_ruby can only serve one request at a time. So you say, that mod_ruby on Windows can _not_ leverage its power because Apache on Windows is a single thread process? This is very interesting. Best Zeno
Re: mod_ruby on Apache for Windows 2.2.17
Dear Eric On Fri, Feb 11, 2011 at 2:23 PM, Eric Covener cove...@gmail.com wrote: I can execute Ruby as a CGI-script without a problem with these simple VirtualHost settings (I tested it with test.rbx) What does that have to do with debugging mod_ruby? It shows that Ruby can be executed as a CGI-Script on Apache without mod_ruby. I think that is helpful to know. Best Zeno
Re: mod_ruby on Apache for Windows 2.2.17
Dear Ben On Fri, Feb 11, 2011 at 2:34 PM, Ben Noordhuis i...@bnoordhuis.nl wrote: On Fri, Feb 11, 2011 at 14:11, Zeno Davatz zdav...@gmail.com wrote: Apache on Windows serves all requests from a single process. Apache on Linux does not do that? Nope. The worker and event MPMs are hybrids: serving requests from many processes, where each process has many threads. And if all processes are busy, Apache will simply spin up more. Ok, thank you for this hint! I am reading this now: http://httpd.apache.org/docs/2.2/en/mpm.html The Ruby interpreter is not thread-safe so mod_ruby creates a Big Mutex whenever it needs to run. Thus on Windows, with its single-process model, mod_ruby can only serve one request at a time. So you say, that mod_ruby on Windows can _not_ leverage its power because Apache on Windows is a single thread process? Effectively single-threaded when mod_ruby is serving a request, yes. So in other words, what I am trying to achieve - trying to have a big load of Traffic on Apache for Windows with mod_ruby - does not work the same way as it does for Linux because of Apache for Windows running in a single process with many threads. So it is back to the books then. Thank you for your help, Ben and Eric. Best Zeno
mod_ruby on Apache for Windows 2.2.17
Hi I am trying to debug mod_ruby to load in Apache for Windows. So far Apache for Windows does start with mod_ruby.so but it seems that httpd does not start correctly with mod_ruby enabled in Apache for Windows. The steps I took to compile mod_ruby for Apache for Windows 2.2.17 with MinGW are here: http://dev.ywesee.com/wiki.php/Apache/Libapr-1 The Apache Server-Info of my Windows Box is: Module Name: mod_ruby.c Content handlers: none Configuration Phase Participation: Create Directory Config, Merge Directory Configs, Create Server Config, Merge Server Configs Request Phase Participation: none The Apache-Server Info of my Linux-Box is: Module Name: mod_ruby.c Content handlers: yes Configuration Phase Participation: Create Directory Config, Merge Directory Configs, Create Server Config, Merge Server Configs Request Phase Participation: Post-Read Request, Translate Name, Check Access, Verify User ID, Verify User Access, Check Type, Fixups, Content Handlers, Logging So something clearly seems to be different between Windows and Linux. I am willing to pay to get this fixed. Best Zeno