Question

Apache_Confiiguration

Asked by: sam15


I have an oracle http server with apache setting as these.

MinSpareServers 5
MaxSpareServers 20
StartServers 5
MaxClients 150
MaxRequestsPerChild 0
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

Oracle processes parameters was increased from 150 to 500 and problem still occurs.

We have a few web applications that use SSL using that server. Everything worked fine - no issues.

Then we start getting ORA-00020.
ORA-00020: maximum number of processes ( number) exceeded

Does anyone know what may be causing this error in the database. These are basically caused by HTTPD processes created by web server. Should not those be killed after they serve the web page or staty there but server other pages. I keep seeing the number of processes increase by the hour until it does not accept any connections.

I was looking at this directive and did not understand how HTTP is stateful. I thought it was always stateless.
is this what keeps a process alive. This is a default in oracle install though.


KeepAlive Directive
Description: Enables HTTP persistent connections
Syntax: KeepAlive On|Off
Default: KeepAlive On
Context: server config, virtual host
Status: Core
Module: core

The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with many images. To enable Keep-Alive connections, set KeepAlive On.

For HTTP/1.0 clients, Keep-Alive connections will only be used if they are specifically requested by a client. In addition, a Keep-Alive connection with an HTTP/1.0 client can only be used when the length of the content is known in advance. This implies that dynamic content such as CGI output, SSI pages, and server-generated directory listings will generally not use Keep-Alive connections to HTTP/1.0 clients. For HTTP/1.1 clients, persistent connections are the default unless otherwise specified. If the client requests it, chunked encoding will be used in order to send content of unknown length over persistent connections.

See also

The SSLSessionCacheTimeout directive in httpd.conf determines how long the server keeps a saved SSL session (the default is 300 seconds). Session state is discarded if it is not used after the specified time period, and any subsequent SSL request must establish a new SSL session and begin the handshake again. The SSLSessionCache directive specifies the location for saved SSL session information, the default location on UNIX is the $ORACLE_HOME/Apache/Apache/logs/ directory or on Windows systems, %ORACLE_HOME%\Apache\Apache\logs\. Multiple Oracle HTTP Server processes can use a saved session cache file.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-11-03 at 17:05:51ID24869481
Tags

apache

Topics

Apache Web Server

,

Oracle Database

,

Hypertext Transfer Protocol (HTTP)

Participating Experts
1
Points
500
Comments
3

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. cgi + apache
    hi I have a problem regarding apache cgi. It worked fine, but when I reinstalled RH it does not work any more. The ordenary httm page shows just fine. but my cgi files do not open. They have the right porperties (755). when I try to open a cgi file it say misconfuguration...
  2. Apache -httpd.conf error
    My problem is that Apache won't start up. The error coming back is: Syntax error on line nnn of /etc/httpd/conf/httpd.conf: ScriptAlias takes two arguments, a fakename and a realname That line looks like: ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"" ...
  3. Displaying Flash in Apache CGI SSL server
    Hi, I have problem displaying my flash that resides in Apache CGI SSL server, the mime type application/x-shockwave-flash is already define in the configuration file, but i dont know why my flash dont display in my page, i think there is an security issue involve. How could ...
  4. Apache not recognizing httpd.conf commands
    I have just upgraded from apache 1.3.28 to apache 1.3.33 with mod_ssl. When I try to start the new apache, I get errors like this: Syntax error on line 333 of /www/conf/httpd.conf: Invalid command 'Order', perhaps mis-spelled or defined by a module not included in the ser...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: routinetPosted on 2009-11-04 at 08:07:05ID: 25740721

Big caveat: I know Oracle is a database, and that's about it.  I'm a little shaky on Apache pre-fork vs. worker, so I may be basing my advice on incorrect assumptions.  Learn as you go, right?  :)

I think you're looking in the wrong place.  You're receiving an Oracle error, not an Apache error.  It sounds like you already looked at that, though.  Does the number you are seeing the error message relate to the configuration you changed in Oracle?  See here for some basic troubleshooting:

http://www.shutdownabort.com/errors/ORA-00020.php

Remember, a single child process/thread from Apache can create several database connections, depending on how the application is coded.  One Apache request does not necessarily mean one Oracle connection.  Do you use persistent connections in the application?  You may also want to check your connection timeout or idle timeout in Oracle.

For Apache, I assume you are using pre-fork?  

The KeepAlive setting is impacted by the MaxKeepAliveRequests directive.  But that should really only impact the speed of requests for secondary resources belonging to any particular page.  For example, when I request /index.php, the server will wait 15 seconds before closing my original TCP session.  That gives me time to also request /index_picture_1.jpg and /index_picture_2.jpg without the overhead of setting up a new transport session.  This does not mean to imply Apache is keeping stateful connections - that belongs in the context of the web application.  It just means the client does not need a new TCP session for each request.

The same goes for SSLSessionCacheTimeout, in a way.  The timeout here is for the SSL session instead of the TCP session.  If I request an SSL page, I need to complete a handshake with the server to initialize the encryption, etc.  That requires a certain amount of overhead in time and resources.  Caching that information prevents clients from having to re-establish that session each time.  Unlike KeepAlive, however, this does not maintain a connection with the client.

When you say you keep seeing the number of processes grow, do you mean httpd processes?  You have MaxServers set to 20, so you should never see anything beyond the parent process plus 20 children.  Once you reach that point, new requests will either go into the ListenBacklog queue (slow connections), or receive a "500.13 Server Too Busy" response.

 

by: sam15Posted on 2009-11-04 at 10:41:38ID: 25742420

well, oracle is configure to have 400 session at once.

My understanding is that Apache/mod_plsql should cleanup the processes after connecting to DB. That is what causing the problem. It is not the database.

When i submit a uRL for a n index page. Does Apache create a new process P1 to server the request? You say it will keep that TCP or SSL process for me to use in 15 seconds. What happens afterwards. Does it create a new process for new reqeusts or process 1 will continue to be there serving other requests.

That process should connect to database, get the data and return request to user. I assume after process does that it should release connection to database and wait for next URL request.


http://download.oracle.com/docs/cd/A97336_01/comm.102/a87562/apptroub.htm

http://download-west.oracle.com/docs/cd/B32110_01/core.1013/b28942/opthttp.htm#i1005784

 

by: routinetPosted on 2009-11-04 at 11:55:32ID: 25743220

OK, learning stuff already!

As I understand from my recent reading, mod_plsql essentially parses the URL being requested and passes control through a database connection to the Oracle database.  The called stored procedure referenced in the URL is responsible for generating the response.  mod_plsql actually manages the database connections through a "DAD" - Database Access Descriptor.  For reference, here's the configuration docs for the DAD conf files:

http://download.oracle.com/docs/cd/B14099_19/web.1012/b14007/confmods.htm#i1055749

The two links you provided have necessary information as well.  First, the optimization docs state KeepAlive is probably preferred off.  This makes sense to me, since KeepAlive is for single connection that will make multiple requests for related resources, such as an HTML page and all the images/style/javascript needed for it.  If you expect your application to be receiving single requests from a wide variety of users, you will not save much load by using KeepAlive, and it does bind up a connection until the timeout expires.  

For the caching question, you need to realize the separation.  For SSL, it references the *caching* of the handshake.  The session is not kept open so much as the server "remembers" the attributes of the session.  Subsequent SSL requests will not need to go through the entire handshake protocol.  Since SSL is an independent layer, I think this is a red herring.

KeepAlive holds a TCP session open for 15 seconds after the last request.  That means if I request a page, then request an image referenced on that page, my client only needs to establish a single TCP session.  After 15 seconds, that session is closed at the server.  In terms of mod_plsql, that *should* mean that the Oracle connection is returned to the pool at that time.  The docs pretty much say that mod_plsql does not release connections - it creates a pool per thread/process per DAD.  The troubleshooting link provides a relatively simple formula: (#_of_apache_processes) * (#_of_DADs) = (#_of_pooled_connections).  Each Apache process gets its own connection pool consisting of (#_of_DADs) connections.  So, if a single process gets kept alive, that process-DAD is locked up and cannot serve more requests.  With your current configuration, that should mean that for every sliding 15-second interval, the 21st request receives a 500.13.

About the 500.13...  My first post stated that Apache would return a 500.13 if it was an Apache load issue.  But mod_plsql actually manages the requests for Apache, so it may be returning its own application-oriented codes instead of standard HTTP errors.  I agree that the error response is probably coming from mod_plsql, which acts as a sort of proxy for errors reported from your Oracle application.

So far, I'm with you on the KeepAlive setting.  Apache recommends it be set to off for Oracle applications, Oracle says the same, and you are seeing the symptoms associated with it being on.  If that fails to impact the issue, you'll need to revisit the configuration for your DAD to see what can be tweaked.  This includes verifying that your server has enough resources to handle all requests (memory, # of processes, and # of connections).

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...