ORACLE WEBSERVER TUNING POINT - Application Server (Korean)

제품: Application Server
작성날짜 : 1997-11-18
* oracle webserver tuning point
Operating System Parameters (Sun Solaris)
Maximum TXP/IP Connections
tcp_conn_req_max is the maximum number of TCP/IP connections that can be
queued by the operating system. Set it to the
maximum value for your operating system version:
Solaris 2.5: Default: 32 ; Maximum: 1024
Solaris 2.4: Default: 5 ; Maximum: 32
Other parameters and their recommended values are:
Parameter name value
tcp_close_wait_interval 3000
tcp_rexmit_interval_min 1500
tcp_xmit_hiwat 65536
tcp_xmit_lowat 24576
tcp_recv_hiwat 65536
To change these parameters, login as root and use the following command:
# /usr/sbin/ndd -set /dev/tcp parameter_name value
UNIX File Descriptors
Each process has a maximum of 1,024 file descriptors. It is recommended
that this be set to the maximum. In order to do this, run the
following command:
% unlimit descriptors
before starting the server
Max Processes
In general, each user/owner needs 512 processes. This is especially
true for
the administration account that owns the OWS processes
Swap Space
You should monitor available swap space, context switches, load, and paging
on your system by using Solaris commands such as
vmstat and sar.
Tuning Oracle Web Application Server
This sections provides information about tuning the Web Request Broker and
Minimum and Maximum Number of Cartridges
You can maximize the performance of Oracle Web Application Server by
adjusting the minimum and maximum number of
cartridges based on the average and peak connection rate. The ideal minimum
60%-80% of concurrent connections which can be
expected on your server. You must take into account the amount of memory
available. Ideally, there should be enough cartridges to
allocate 1 for each concurrent request. But due to memory constraints, this
may not always be possible. A properly tuned server
balances the number of requests served with performance, based on memory
Here is an example:
Max. number of concurrent connections expected = 25
Recommended maximum = 30
Recommended minimum = 15-20
The sum of memory required by the maximum of all cartridges needs to be less
than the amount of memory available. In general, it is
advisable that when all the cartridges are up and running, the usage should
not exceed 75% of available swap space.
Cartridge Buffer Size
The cartridge internal buffer size (in bytes) has a default value of 60,000
bytes. The most important criteria for this parameter is that
it must be big enough to hold all the headers written through
The larger the size, the better the performance.
Each time a request is serviced, information is logged to the listener log
file. If the log file is on the same disk as the document root,
there is contention for the disk between request reads and log writes. We
strongly recommended that the log file be placed on a
separate disk. Also, on a stable system, the logging level should be set to
minimum value (1). Refer to the Oracle Web Application
Server documentation for detailed information on logging.
Monitor Errors
It is a good idea to regularly monitor the errors generated in the server.
Large number of errors in the server waste resources on the
system and may be easily fixed by correcting the configuration. For example:
HTTP error 404 is usually caused by a faulty link.
Error 500 might be caused by an image map with holes in the coordinates
and a user clicks when the pointer is over an
undefined region. To remedy this, you should have a default entry for
every image map. This directs the server to a default
URL if the user clicks anywhere outside of the defined region.
Spyglass HTTP Server
This section contains tuning information which is specific to the Spyglass
HTTP Listener which is bundled with Oracle Web
Application Server 3.0.
Specifies the maximum number of requests (up to 338) that can be handled
concurrently by the listener. If a listener's maximum
number of requests is set at 100, then the 101st request is sent back to the
browser with a redirection status and the URL of the new
destination. The browser interprets this status and sends a request to the
destination. This operation is transparent to the user.
In many situations, redirecting the request to a secondary listener may be
better than waiting for service on a loaded primary listener.
Since the redirection adds the cost of a network round-trip, the needs of an
Intranet are obviously different than for the Internet.
For example, if the maximum of requests for Listener1 was set to 100, then
would redirect concurrent requests beyond 100 to
Listener2. The question is: what is more expensive, a request that makes a
round trip to the browser and back to the new server or
waiting for the primary listener to service this request along with 100
other concurrent requests ? Here is an example:
Expected peak number of concurrent requests = 150
Possible redirection point = tuned between 75-125
Rescan Intervals
The listener maintains a cache of all the directory entries under DOC_ROOT.
By default, for every request it verifies the file update
status by confirming it in the directory entry. The Rescan Interval
parameter specifies how often (in seconds) the DOC_ROOT
directory structure is scanned. For sites where the content changes
infrequently, this rescan interval should be set to a high value. For
example: If the Rescan Interval parameter is set to 3600 (1 hour), the
directory will be rescanned every hour. Any changes in files in
DOC_ROOT will not be picked up for a maximum of one hour, unless the server
is restarted or reloaded. When a request is received,
the listener must sort through its directory structure to find the file.
Keeping a large number of files in a single directory will slow
down this search each time. Instead, segregate files logically into separate
DNS Resolution
Each time a request is received, the IP address received from the client is
translated into a Domain Name Service hostname and
logged in the log file. This can be an expensive operation, especially if
the DNS server is heavily loaded. The DNS name resolution is
controlled by the DNS Resolution parameter in the listener configuration
file (svlistener_name.cfg). It can be set to the following values:
ALWAYS: Always translate IP addresses into DNS hostnames.
LAZY: Translates IP addresses into DNS hostnames only when needed by a
Spyglass ADI application or security module.
LAZY_WITH_CGI: Translates IP addresses into DNS hostnames only when
needed by CGI programs.
NEVER: Never use DNS hostnames (default).
Due to the added cost of this operation, we recommend that you set this
parameter to NEVER. If DNS hostnames are required for
logging and tracking purposes, the DNS reverse name-lookup off-line. This
can be accomplished by running a script at periodic
intervals to go through the archived log file and replace the client IP
addresses with the hostnames by performing a DNS reverse
lookup at the DNS server.
Tuning the Oracle Database
Multi-Threaded Server
Ideally, dedicated Oracle server processes should be allocated for all the
PLSQL cartridges. But for sites that run into memory and
swap space constraints, we recommend that you use the Oracle Multi-Threaded
Server. It is an effective way to multiplex your
connections to the database, ensuring that each server process is
consistently being used to the maximum. Please refer to the Oracle
Database documentation for more details on architecture, installation and
configuration of MTS.
Database Connections
Each PLSQL cartridge, upon startup, tries to connect to every database that
is specified in the owa.cfg file. This can slow down the
startup process. It is recommended that you keep the entries in the owa.cfg
to a minimum. For a large number of database
connections, you should partition the connections into logical groups.
Please refer to the documentation on the PLSQL cartridge for
more information on partitioning.


dynamic ports and firewall?

I'm running a firewall and want to back it up using OSB. I'm trying to find out the range of dynamic ports that OSB uses (in addition to 400 and 10000) so I can open them up.
I can't find it anywhere in the documentation. I only find this reference as part of the Windows installation section:
If your Windows host is protected by a firewall, the firewall must be configured to permit Oracle >Secure Backup daemons on the host to communicate with the other hosts in your administrative >domain. Oracle Secure Backup includes daemon components that listen on ports 400 and 10000, >as well as other dynamically assigned portsWe can allow full access from our backup server to all ports on the firewall, but that is NOT a preferred solution! :-)
The range of port numbers should be above 20,000 but below 32,000 (ie 20,000 - 20,024) in addition to ports 400 and 10000.
The number of ports needed is calculated by multiplying the # of concurrent OSB activities by 5. Or, by the # of tape drives (inside the firewall) and the # of clients (outside the firewall).
1) On Firewall, open desired range of ports plus 400 and 10000.
2) Edit the /etc/services file on both the admin host and the client to use:
ob-daemon-low <port low #>/tcp
ob-daemon-high <port high #>/tcp
These parameters are based on ports you select for OSB (from step #1 above). 
Thank you!

Connection dropping

We are trying to run an application through two different networks, network A and network B. The database is on network A and 2 application windows 2003 servers are kept in network B, and the users who will be using the application on a day to day basis are in network B.
The problems we are coming across are highlighted below:
1. When the application service starts up, it remains connected to the Oracle db over the firewall as normal for 2 hours 10 mins (the single port has been opened on the firewall). 10 connections are visible between app server and db.
2. After this time the consistent behaviour is 2 of the 10 connections are terminated leaving 8 connections remaining. The app still works if logged and but becomes unstable and users are unable to login if they have come out.
3. Network connectivity has shown just before the disconnection (ie after 2 hours 10 mins) the database attempts to initiate connections to the application server on a different range of ports. When 10 of these connection attempts fail, the two Oracle connections as above are terminated
Can anyone advise on what may cause this problem?
although i am by no means a oracle expert, but i can give 1 suggestion which u can try if u have not ..
from ur client machine , execute command prompt , and then ping the server
ping myserver -t
-t is the switch to make sure it pings, the moment connection is dropped check if ping is still responding, just wanted to eliminate the possibility that there is some network issue.

WLS cluster hanging.

Hello experts! Environment:OEL 6.6 x64. WLS 2.2.15WLS Plug Installed WLS on 2 physical servers, Apache as a loadbalancer on third server. Indication:When hanging, network statistic on third server looks like: netstat -atunp|grep 80|wc -l                         ~6400-7000     - dead connections (?)netstat -atunp|grep 80|grep ESTABL|wc -l     ~75-100          - active connections Other resources not used intensive.If restart Apache, then work is normalized at some point.Then I tried to use WLS as loadbalancer with the HttpClusterServlet on third server, but faced with the same. I have not changed yet kernel parameter udp_max_buffer. The net.core.rmem_max has a default value 4194304. Question:What can cause the problem? Is it "multicast storm" or something else? There is no firewall. Our app performs well on one WLS instance, (I leave 1 instance running in cluster) but planned to increase the load. Regards.
You will need to tune your TCP/IP settings, ie reduce the fin2 timeouts so your dead connections timeout faster and get recycled to be used again, or increase your file descriptor limit (network sockets also use fd).
I set the following parameters:sysctl.conf     net.ipv4.ip_local_port_range = 1000 65535     net.core.rmem_default=4194304     net.core.rmem_max=4194304     net.core.wmem_default=262144     net.core.wmem_max=1048586     net.ipv4.tcp_fin_timeout = 10     net.ipv4.tcp_tw_recycle=1     net.ipv4.tcp_tw_reuse=1      net.core.somaxconn=1024     net.core.netdev_max_backlog=2000     net.ipv4.tcp_max_syn_backlog=2048 limits.conf     oracle soft nproc unlimited     oracle hard nproc unlimited     oracle soft nofile 1000000     oracle hard nofile 1000000 The situation has not changed. Work interruption occurs abruptly. Unfortunately there is no opportunity to study the operating system at this point. Our client is a bank. Downtime not allowed.Regards.
Did you use the -p or -w to load/set the values in sysctl.conf or did you just update the file?Values set in limits.conf won't take effect untill the user logs out and logs back in, or for processes, until they are restarted.
After changing the server has been restarted.

Timeout exception in Jdeveloper

Team,  When I work from office with LAN cable, I connect to VPN via Cisco Anyconnect and running page from Jdev takes 15 Mins.When I work from Home with Wifi, I connect to VPN via Cisco Anyconnect and running page from Jdev never completes and gives Timeout exception. If I work from Office and access local ebiz instance in our company then page runs fast in less than 1 min. Timeout exception:-No response received in 30 secs.Please try the following:1) Increase the timeout limit by setting the JRAD.RUNREG_TIMEOUT parameter in the file located in the system directory.2) Check the Host Name in the preferences, under Embedded OC4J.3) See the Log window for any error messages. Jdeveloper version:- Any suggestions?Can you please help me to debug this issue.
Most likely the network connection issues. Try doing a ping from your machine to the instance and see if any packet drops. Generally, packet drops could cause some performance issue. -Phani Vemi

inactive session

Hi,I connect from my Windows laptop to Oracle Linux servers using Putty.When running long scripts or command line network connection aborts and the command line or script is aborted also. Any Putty parameter to avoid it?Thanks
Likely a ssh session timeout. This can be addressed client side, or server side. I prefer client side, as there are good reasons for expiring idle sessions, by default. One can specify options (via the -o switch) for ssh, and set options such as ServerAliveInterval. I don't use Putty and cannot comment on its options - suggest you have a look at what it supports ito keeping a TCP session alive.
Oh yeah - why not use screen? It is the most robust means of running long commands or scripts on a server, without doing it via the actual console. On the server, yum install screen. And screen sessions can be created, detached from, and attached to.
Was this post intially posted elsewhere? Or is there a problem with the platform notification system? Anway, regarding your problem. There can be several reasons for loosing connections. For example: A firewall determined that a connection is idle and needs to be disconnected.Power saving on the remote host disconnected the session - I see this often for example when using Virtualbox and when the host system goes into sleep mode. So in order to find a solution, more information from your end is required to find the possible cause.
Client-side:ssh_config(5) - OpenBSD manual pages  Server-side:sshd_config(5) - OpenBSD manual pages 
Sounds like line exceeding the buffer limit.. on you putt  configuration-  under windows option lines of scroll back set increase the width- eg i have set it to 20k 
  my configuration on the server side
Hi. Possible two different reason for lost session: 1.  When router/firewall  remove idle connections.       Error look like: "Connection reset by peer"      It this  case you should configure keep-alive.      Session will not lost if your scipt will do some output on screen.     2. SSHd configured for idle timeout.     In this case you can only change ssh configuration. You can configure keep-alive at putty:     Configure -> Connections:                   enable TCP keepalives                    set seconds between  keepalives (300 for example. It should be less then network timeout). Regards,  Nik