mod_jk2 connector problems

Discussions

Performance and scalability: mod_jk2 connector problems

  1. mod_jk2 connector problems (3 messages)

    We have tested mod_jk2 v.2.0.3 connector with Apache1.3.26, 1.3.27 and
    2.0.44. For each apache version mod_jk2 was compiled as DSO and tested under heavy load using "ab" tester from Apache. Basically all apache version threw

    "Segmentation fault (11)" and PID of terminated child process under heavy
    load - about 120-150 concurrent servlet requests per instance.
    Under small load (below 50 concurrent requests) I have never seen this
    error, so it might be overloading in some internal buffers...

    Do you have any recommendations on how to fix these problems, I are running
    out of ideas and because of this, we'd to postpone our deployment of
    Apache + Tomcat.

    Thank you in advance for all your help.

    T.N

    Threaded Messages (3)

  2. How about using the Apache reverse proxy?[ Go to top ]

    You can configure Apache as a reverse proxy and dismiss any mod_jk.

    We run a site that runs 200 concurrent virtual users (we are using OpenSTA for load testing) without a glitch. Apache on Linux is configured for HTTPS (SSL accelerated by CryptoSwift) and reverse proxying. The backend is an unsecure (HTTP) Weblogic server.

    Apache 1.3.X config for reverse proxy:
    1. Uncomment the LoadModule line for proxy.c
    2. Add the following lines to you virtual (or standalone) host:

    ProxyRequests off # This disallows the use of this Apache as a general HTTP proxy
    # configure /app directory to be proxied into the real servlet container:
    ProxyPass /app http://backend-servlet-engine:tomcat-http-port/app
    # and addresses should be replaced with ours on the way back:
    ProxyPassReverse /app http://backend-servlet-engine:tomcat-http-port/app

    This is simple and has the disadvantage of blanketing the servlet container with the same IP (the IP address of the reverse proxy itself) for every request's remote address. If this is an issue (e.g., you log IPs for security reasons), instead of the ProxyPass directive, you can use RewriteRule to modify the requests on the fly and pass the actual remote address in a parameter (requests' remote addresses will still be broken).

    Hope this helps.
  3. How about using the Apache reverse proxy?[ Go to top ]

    Thanks much for your help. I am pretty new to this so please bear with me on this. I am not clear in what steps I need to take to accomplish 1. and 2. as mentioned in your response. Can you start from the ground up?

    1. After downloading the apache source, the next step is ????????

    Thanks much

    T.N.

    **********************************************************
    Apache 1.3.X config for reverse proxy:
    1. Uncomment the LoadModule line for proxy.c (
    2. Add the following lines to you virtual (or standalone) host:

    ProxyRequests off # This disallows the use of this Apache as a general HTTP proxy
    # configure /app directory to be proxied into the real servlet container:
    ProxyPass /app http://backend-servlet-engine:tomcat-http-port/app
    # and addresses should be replaced with ours on the way back:
    ProxyPassReverse /app http://backend-servlet-engine:tomcat-http-port/app
  4. Ground up[ Go to top ]

    0. Uninstall Apache or remove Apache packages.
    1. Download and untar the Apache source
    2. Go into build directory
    3. Do these but append --enable-module=proxy and --enable-module=rewrite after the ./configure command line.
    4. go to /usr/local/apache (or where make install puts Apache, this is the default)
    5. Open conf/httpd.conf in vi or any other text editor.
    6. Find and uncomment the LoadModule line for mod_proxy
    7. Find the first (and probably the only) DocumentRoot line
    8. Append
    ProxyRequests off
    ProxyPass /app http://real-server:port/app
    ProxyPassReverse /app http://real-server:port/app
    directives after the DocumentRoot directive and before any <VirtualHost> definitions. Save the file and exit.
    9. Check the config with: bin/apachectl configtest. If it does not pass the test, check the syntax on the lines, correct and retry.
    10. bin/apachectl start
    11. Fire up a browser and point it at http://rev-proxy/app.

    That should be it.