Listener Load Balancing Becomes Unbalanced!!

Hi all, Yesterday we observed that for no apparent reason, one instance in a RAC database appeared to be left out of the listener load balancing equation. This resulted in a very high load on the remaining instances. The only way we could repair this was to restart the un(der)utilized instance.
Before restart:
SQL> select count(*),inst_id from gv$session group by inst_id;
COUNT(*) INST_ID
216 7
41 12
220 9
After restart:
SQL> select count(*),inst_id from gv$session group by inst_id;
COUNT(*) INST_ID
222 7
218 12
224 9
Has anyone else seen this? Is there any way to tell what is going on? Is there any way to fix this without restarting the instance? We have tried restarting various listeners without success. Thanks in advance, Mike

Actually, we have the problem in effect on one of our databases right now. The ocr status for all the instances is good:
ora.S.S1.inst ONLINE ONLINE on x911
ora.S.S2.inst ONLINE ONLINE on x912
ora.S.S9.inst ONLINE ONLINE on x919
ora.S.db ONLINE ONLINE on x927
But when we look at the number of sessions per instance:
SQL> select inst_id,count(*) from gv$session group by inst_id;
INST_ID COUNT(*)
1 50
2 237
9 230
They are not balanced. We look at the load average on each host:
oracle@x912:~> ssh x911 uptime
3:44pm up 224 days 6:48, 15 users, load average: 1.07, 1.00, 0.99
oracle@x912:~> ssh x912 uptime
3:44pm up 223 days 11:46, 12 users, load average: 5.26, 5.18, 5.35
oracle@x912:~> ssh x919 uptime
3:44pm up 223 days 11:42, 10 users, load average: 3.64, 4.01, 6.47
x911 for instance S1 is the lowest (which we would expect with no connections)
But when we connect through SQL*PLUS:
oracle@x912:~> sqlplus dbamb@s
SQL*Plus: Release 10.2.0.2.0 - Production on Wed Dec 19 15:47:06 2007
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select instance_name from v$instance;
INSTANCE_NAME
S2
We get connected to a higher utilized instance. When we connect to the instance by name:
SQL> conn dbamb@s1
Enter password:
Connected.
SQL> /
INSTANCE_NAME
S1
We get it. Isn't the RAC db connection is supposed to go to the host with the lowest load average? What can I do?
Thanks in advance, Mike

Similar Messages

  • MULTIPLE LISTENER의 LOAD BALANCING 및 2개의 NETWORK CARD 사용 시 SETUP

    제품 : SQL*NET
    작성날짜 : 1997-11-24
    MULTIPLE LISTENER의 LOAD BALANCING 및 2개의 NETWORK CARD 사용 시 SETUP
    =====================================================================
    Oracle V7.3의 SQL*Net 2.3의 새로운 기능으로 여러 개의 Listener를 띄우면서
    상호 Load Balancing을 유지하는 기능을 소개하고자 한다.
    Load Balancing 기능을 이용하여 각각의 Listener와 Oracle Instance 간의
    Overloading을 줄일 수 있다.
    다음의 예는 하나의 장비 내에 2개의 Network Card가 있을 경우에 대해 setup을
    하는 방법이며 만일 하나의 Network Card가 있을 경우는 Host는 하나만 지정
    하면 된다.
    1. init<SID>.ora file을 지정할 Parameter
    MTS_MULTIPLE_LISTENERS=TRUE
    COMPATIBLE=7.3.2.0
    2. 예를 들어 Listener를 2개 사용하는 경우라면 initSID.ora에
    mts_dispatchers="tcp,10"
    mts_max_dispatchers=20
    mts_servers=20
    mts_max_servers=40
    mts_service=ORA73
    mts_listener_address="(address_list=
    (address=(protocol=tcp)(port=1621)(host=152.69.30.100))
    mts_listener_address="(address_list=
    (address=(protocol=tcp)(port=1622)(host=152.69.30.100))
    mts_listener_address="(address_list=
    (address=(protocol=tcp)(port=1623)(host=152.69.30.102))
    mts_listener_address="(address_list=
    (address=(protocol=tcp)(port=1624)(host=152.69.30.102))
    3. listener.ora file에 설정되는 내용은
    LISTENER1 =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = tcp)
    (HOST = 152.69.30.100)
    (PORT=1621)
    (ADDRESS =
    (PROTOCOL = tcp)
    (HOST = 152.69.30.100)
    (PORT=1622)
    LISTENER2 =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = tcp)
    (HOST = 152.69.30.102)
    (PORT=1623)
    (ADDRESS =
    (PROTOCOL = tcp)
    (HOST = 152.69.30.102)
    (PORT=1624)
    SID_LIST_LISTENER1 =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = ORA73)
    (ORACLE_HOME=/oracle2/ora73/app/oracle/product/7.3.2)
    SID_LIST_LISTENER2 =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = ORA73)
    (ORACLE_HOME=/oracle2/ora73/app/oracle/product/7.3.2)
    STARTUP_WAIT_TIME_LISTENER1 = 0
    STARTUP_WAIT_TIME_LISTENER2 = 0
    CONNECT_TIMEOUT_LISTENER1 = 0
    CONNECT_TIMEOUT_LISTENER2 = 0
    4. tnsnames.ora file에 설정되는 내용들
    * 다수의 port에 Random하게 접속하는 경우
    RANDOM =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host = 152.69.30.100)
    (Port = 1621)
    (CONNECT_DATA =
    (SID = ORA73)
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host = 152.69.30.100)
    (Port = 1622)
    (CONNECT_DATA =
    (SID = ORA73)
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host = 152.69.30.102)
    (Port = 1623)
    (CONNECT_DATA =
    (SID = ORA73)
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host = 152.69.30.102)
    (Port = 1624)
    (CONNECT_DATA =
    (SID = ORA73)
    * 개개의 Port로 접속하는 경우
    TORA1 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host =krrcsun)
    (Port = 1621)
    (CONNECT_DATA =
    (SID = ORA73)
    TORA2 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host =krrcsun)
    (Port = 1622)
    (CONNECT_DATA =
    (SID = ORA73)
    TORA3 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host =krrcsun)
    (Port = 1623)
    (CONNECT_DATA =
    (SID = ORA73)
    TORA4 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (Host =krrcsun)
    (Port = 1624)
    (CONNECT_DATA =
    (SID = ORA73)
    5. 각각의 Listener를 띄우는 방법
    $ lsnrctl start LISTENER1
    $ lsnrctl start LISTENER2

  • Manual load balancing or tnsnames load balancing

    Hussein,
    We have 2 nodes apps (apps1 and apps2 both on separate machine) connecting to a 2-node Rac database (db1 and db2 both on separate machine).
    We want to implement loadbalancing on the 2 apps servers . I "heard" in can be done using the tnsnames.ora load balancer? Or I am just out of this world. :)
    Thanks a lot,
    Ms K

    Hi;
    Please check below and see its helpful:
    11i RAC JDBC & Listener Load Balancing Configuration [ID 244366.1]
    Implementing Load Balancing On Oracle E-Business Suite - Documentation For Specific Load Balancer Hardware [ID 727171.1]
    Load Balancing in 11i [ID 148516.1]
    How To Ensure Load Balancing Of Concurrent Manager Processes In PCP-RAC Configuration http://ID 762024.1
    Configuring 11i For Load Balancing [ID 117421.1]
    JSP Error After JDBC Load Balancing Implementation [ID 269208.1]
    How To Setup Load Balance For Workflow 2.6.3 [ID 311803.1]
    Regard
    Helios

  • Cache and Load Balancing with Oracle APEX Listener

    Hi,
    I intend to use only HTTP access.
    How to implement a Cache and Load Balancing with the Oracle APEX Listener?
    Is it possible to do with the the standalone running APEX Listener?
    Thanks by advance for any tips/documentation/references.
    Kind Regards.

    Hi,
    I think this question is best asked in the APEX Listener forum:
    ORDS, SODA & JSON in the Database
    Kind regards
    Sandro

  • Cache and Load Balancing for the Oracle APEX Listener

    Hi,
    I intend to use only HTTP access.
    My database is Oracle 11gR2, SE, 32 bit.
    How to implement a Cache and Load Balancing with the Oracle APEX Listener?
    Is it possible to do with the the standalone running APEX Listener?
    Thanks by advance for any tips/documentation/references.
    Kind Regards.

    Error. To be closed.

  • Cache and Load Balancing for Oracle APEX Listener

    Hi,
    I intend to use only HTTP access.
    The database I use is Oracle11gR2 SE 32bit.
    How to implement a Cache and Load Balancing with the Oracle APEX Listener?
    Is it possible to do with the the standalone running APEX Listener?
    Thanks by advance for any tips/documentation/references.
    Kind Regards.

    Error. To be closed.

  • Connection string in listener log file for loading balance/failover

    Hi Experts,
    I have 4 node RAC for oracle 10g2 in rad hate 5.0
    We creaed service dbsale ( sale1,2 as pr imary and sale3/4 as available) with loading balance/failover.
    The remote user created a local TNS as
    localmarket =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 155.206.xxx.xx)(PORT = 1521))
    (LOAD_BALANCE = OFF)
    (CONNECT_DATA = (SERVICE_NAME = dbsale))
    From server side, I saw that user send two request connection string. one fail and another is OK.
    It seems that fail connecting come from failover/loading balance from dbsale3?
    Why do we get two connection string in listener log file?
    Which difference is between two connection string?
    Where does system change these connection string?
    Thanks for your explaining.
    Jim
    ==============listener.log message
    [oracle@sale log]$ cat listener_sale.log|grep pmason
    15-SEP-2009 13:52:24 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54326)) * establish * dbsale * 0
    15-SEP-2009 13:52:25 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))(SERVER=dedicated)(INSTANCE_NAME=sale3)) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54327)) * establish * dbsale * 12520
    15-SEP-2009 13:52:30 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54329)) * establish * dbsale* 0
    15-SEP-2009 13:52:47 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54332)) * establish * dbsale * 0
    15-SEP-2009 13:52:47 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))(SERVER=dedicated)(INSTANCE_NAME=sale3)) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54333)) * establish dbsale 12520
    15-SEP-2009 13:52:49 * (CONNECT_DATA=(SERVICE_NAME=dbsale)(CID=(PROGRAM=oracle)(HOST=rock)(USER=test ))) * (ADDRESS=(PROTOCOL=tcp)(HOST=161.55.xxx.xx)(PORT=54334)) * establish * dbsale * 0
    Edited by: user589812 on Sep 16, 2009 7:21 AM

    Hi Jim,
    I think the best way on this case is create one service with one instance as primary and another 3 as available.
    Or use the connect string with two vip addresses, cause the service has two instances and the tnsnames.ora entry has only one.
    Cheers,
    Rodrigo Mufalani
    http://mufalani.blogspot.com

  • Load balancing MQ 7.0 Foreign JMS Server and Weblogic 10 MDBs?

    We have the following configuration and we are trying to troubleshoot what appears to be a load balancing issue.
    We have 3 Solaris servers. Each Solaris server has two Weblogic managed servers running on it. There are a total of 6 managed servers in the Weblogic cluster.
    MQ Series 7.0 is also installed on each Solaris server. The MQ queue managers are in a MQ cluster. Each queue manager has the same queues defined.
    We have a foreign JMS Server configured on Weblogic that has destinations and a connection factory defined. There aren't many configuration options available for the connection factory. The destinations are bound to the queues defined on MQ using the MQ bindings file.
    The MQ bindings file was generated using the TRANSPORT(BIND) mechanism. Each bindings file points to the queue manager running on that machine. So the 2 managed servers running on one machine are accepting messages from the queue manager on that machine.
    The MDB's listenning for messages on the MQ queues are configured as follows in the weblogic-ejb-jar.xml:
         <max-beans-in-free-pool>16</max-beans-in-free-pool>
    We also created a custom work manager with min threads constraint=5 and max threads constraint=16. The dispatch-policy of all the MDBs is set to the custom work manager.
    The open input count on each MQ queue managers shows up as 32 which is expected.
    The default load algorithm on the cluster is round-robin.
    When we run a load test (injecting 40 messages per second on one MQ queue), we notice that one managed server ends up being significantly loaded than the other. Each MQ queue manager in the MQ cluster receives approximately the same number of messages in the load test. But it seems like one managed server is preferred over the other in Weblogic.
    What can be done to equally balance the load among the two managed servers on each Solaris server?
    Thanks for the help.

    Load balancing generally applies at determing how many consumer threads has to be created on each of the clustered queue instance. In that sense you have achieved perfect load balancing as your queue instances has the same no of consumer threads.
    Once you have set 'x' consumer threads on a queue, it is upto messaging provider to decide which thread to deliver a particular message and you will hardly have any control over this. Since your 32 threads are listening on the same queue, MQ can select any thread for delivering the message and the behaviour could be non deterministic.
    One option to change your design is to have a dispacther mdb which picks the messages off the MQ and then routes to a weblogic distributed destination and you can have your core mdb which does all processing listen to this distributed destination. You can enable load balancing when the disaptcher mdb routes the message to the distributed destination. Since dispatcher MDB is nothing more than a router, the unbalanced consumption off the MQ shouldn't seriously affect the server.

  • Rac load balance

    Dear Gurus
    my database 10.2.0.4 and rac is configured.
    database is working fine.actually rac is installed from last 3 years and database is running fine.
    But when we see cpu usage on both nodes by command sar -r ,cpu usage on node 2 is less than node1
    so my boss is saying that load balancing is not happening.
    Could anybody tell me how could i check whether load balancing is fine on both nodes or is it like some master node concept.
    Please give some ideas to test the same as in my opinion load balancin is working fine but i don't know how do i check it

    Hi
    So, you are trying to achieve uniform CPU usage among the RAC nodes using RAC load balancing techniques?
    I am afraid, answer to your problem is not simple. Do you use Services to load balance? If yes, how is the CLB_GOAL and GOAL (run time) is setup for the services? You could potentially use services and load balancing goal to keep the CPU usage uniform.
    But, this becomes more complex in connection pool environments. In connection pool, connections are created at an accelerated pace. PMON updates the listener with Load Balancing Advisory data every 3 seconds or so, and if the connections arriving within that 3 seconds, then the listener does not get correct LBA and So, the listener might redirect the connection to the node already heavily loaded. You could control the this damage by introducing delays between the connection pool logins in such a way that PMON has enough time to update the listener.
    Even then, In theory, you could have imbalanced CPU usage. For example, let's say that application created 50 connections to instance 1 and 50 connections to instance 2. Now, some part of the application is going to have more CPU usage, then the others. If accidentally, all those connections borrowed by those CPU intensive components, are from one instance, then CPU usage will be higher. I guess, what I am saying is that connection pools do not know underlying instance load and might not distribute the workload.
    I will ask the question differently. Were you able to identify exactly what is causing the increased CPU usage in the heavily loaded node? Are you sure that it is the application? If yes, you could potentially configure more services so that you can differentiate the CPU usage at the service level.
    Now, the ultimate question is, do you see this imbalance causing performance issue?
    Hope this helps,
    Cheers
    Cheers
    Riyaj Shamsudeen
    Principal DBA,
    Ora!nternals - http://www.orainternals.com - Specialists in Performance, RAC and EBS
    Blog: http://orainternals.wordpress.com
    Oracle ACE Director and OakTable member http://www.oaktable.com
    Co-author of the books: Expert Oracle Practices, Pro Oracle SQL, Expert PL/SQL Practice
    Join me: Advanced RAC seminar - see blog.

  • APEX SSO and Load balancing: Could not determine workspace for application

    We had a single HTTP Server serving APEX in a 10.2.0.2 database configured with SSO to be used by the developers. APEX has been registered as a partner application and the login url has been CA Siteminder protected so that the SM_USER details are forwarded in the header for the application to use for authorization. Everything is fine so far.
    Now we have added a HTTP Server on another host and have it all set up for APEX and its pointing to the same database. APEX_ADMIN access works as normal, but applications previously using SSO now get the following error after entering the URL.
    Expecting p_company or wwv_flow_company cookie to contain security group id of application owner.
    Error ERR-7620 Could not determine workspace for application ().
    Using HTTP Watch I find that the application is not even trying to redirect to the login page.
    What is wrong here?

    APEX has been registered as a partner application as described in
    http://www.oracle.com/technology/products/database/application_express/howtos/sso_partner_app.html
    In the meantime I found metalink document 368746.1 which describes the cause of this problem. Please read carefully what I wrote, it all works when the the new APEX web server is turned off in the server farm on the load balancer and directed through the original web server. When running regapp.sql the hostname in the listener token was using the virtual hostname. This works fine if the request comes from the original APEX server which proofs that there is nothing wrong with the installation and set up of SSO. When directing the request to the new APEX web server the APEX_ADMIN page still works only existing work spaces using SSO don't seems to work anymore resulting in a error as described in the subject.
    As for metalink document 368746.1 naming the causes of this error:
    - there are no duplicate entries in WWSEC_ENABLER_CONFIG_INFO$
    -LISTENER_TOKEN clearly works for requests coming from the first web server
    -theoretically the web server listener port could be changed from 7777, but port 80 needs to be maintained here as production is mimiced as far down as possible.
    Is there some cache table which can be cleared? How is it that the flows schema (apex engine) can not find the work space when the request comes from a new web server which can however access the APEX_ADMIN pages.
    anyone?

  • How to change the OraSSO login link in webcache/load balance

    Hi
    we have 10gAsR1 installed as a Portal instance. We have 6-server
    load balancer => webcache as loadbalancer (listening port 80)
    Wb ch1 and wb ch2 => webcache (listening port 7777)
    portal1 and portal2 => Portal listening 7778
    infra =>Infrastruture with repository Portal/Oracle SSO (listening 7777)
    This set up is working fine for our intranet setup, now we need to open this for couple of external clients. Well initially we need to open on the load balancer server on port 80 for external team to access, it works fine when we make it publc access.
    Now when we need to make it SSO (siteminder) enables, when users click on login link it first goes oracle sso then it internally redirects the page to site minder sso.
    Well, I have noted that the sso server details are mentioned in global setting sso/oid details. Since we need to open this for external client we have to add a DNS entry for this so that we can allow its access over firewall..
    Now I have made DNS name change at my infrserver level, now I need to update the change at the load balancer server (where wheb chache is running).
    Any one know how to chang the URL at load balancer.
    I am struck at this point please suggest how should i proceed..
    Thanks,

    Extract from Personalization Guide - Page Footer - Personalization Considerations
    * If you wish to personalize the URL that points to the Privacy Statement for a page that displays a standard Copyright and Privacy (that is, its Auto Footer property is set to true), set the Scope to OA Footer, in the Choose Personalization Context page of the Personalization UI.
    * If you wish to personalize the URL that points to the Privacy Statement for a page that displays a custom Copyright and Privacy (that is, its Auto Footer property is set to false), set the Scope to Page in the Choose Personalization Context page of the Personalization UI. In the following Page Hierarchy Personalization page , identify and personalize the Privacy page element.

  • How can I support a health check, from a load balancer?

    My company has load balancers which use health checks to determine if the end point is available for client traffic. The basic health check is a tcp ping, and will tell you if the device is on the network. The next level of health check is an http request. This request, and the response are static, you can’t create your own version of the request and response. The standard request is this:
         http://host:port/healthcheck/hc.html
    The standard response is this:
         “The server is available”
    I want to use the load balancer as part of my total deployment. The problem is that I am not seeing how to support this health check request and response in the MDEX engine. What I see is this request
         http://host:port/admin?op=ping
    Will return this response
         dgraph <host>: <port> responding at <day month year time>
    It is nice that there is a built in ping, but I am not able to make use of it. I am new to Endeca and still poking around. The dgraph process listens on a port set up in <…>/config/script/AppContext.xml
    <dgraph id="Dgraph1" host-id="MDEXHost" port="3281">
    <properties>
    <property name="restartGroup" value="A" />
    <property name="updateGroup" value="a" />
    </properties>
    <log-dir>./logs/dgraphs/Dgraph1</log-dir>
    <input-dir>./data/dgraphs/Dgraph1/dgraph_input</input-dir>
    <update-dir>./data/dgraphs/Dgraph1/dgraph_input/updates</update-dir>
    </dgraph>
    (I am not using the default port, as I only have an instance on a shared server and have to worry about port clashing. But that is a different thread.)
    In a standard tc Server install I can support this health check by doing this:
    * Create a directory named “healthcheck”, in the “webapps” directory.
    * Place a file name “hc.html” in that directory, which contains “The server is available”
    The one hack which comes to mind is to write a servlet which would be able to be a smart proxy for the load balancer health check. It would pass along any regular traffic to the MDEX engine. But if the request was a health check it would send “admin?op=ping” to the MDEX engine, and for a good response from the engine, create and pass back the correct response to the load balancer.
    Ideas, comments, flames, …
    Thanks

    Hi, we are using following String to test the MDEX ping response but we get the invalid version formation on dgraph.log -
    following is on F5
    GET /admin?op=ping HTTP/1.1/r/nHost:myhost.endeca.com:19000/r/nConnection:close/r/n/r/n
    Following gets logged on Dgraph.log
    WARN 09/05/12 05:30:03.799 UTC (1346823003799) DGRAPH {dgraph} Invalid version format in 'HTTP/1.1/r/nHost:myhost.endeca.com:19000/r/nConnection:close/r/n/r/n'
    Please let me know - if you have any suggestions to solve this issue.
    I know that it works from browser and wget from unix with following commands.
    wget http://myhost.endeca.com:19000/admin?op=ping - from unix command line
    from browser:
    http://myhost.endeca.com:19000/admin?op=ping
    Thanks,
    Ram

  • Load balancing and clustered MDBs using a Queue

    With the following advice/information from
              http://e-docs.bea.com/wls/docs61/faq/jms.html#252978,
              "One customer had an example where topic MDBs are needed in which there will
              be multiple implementations of the MDBs listening on the same topic. In
              other words, more than one MDB with a different implementation may be
              subscribing to the same topic. The client has no advanced way of knowing how
              many different kinds of MDBs may be listening on the same topic, but it is
              possible for there to be more than one listener, therefore topics, not
              queues. For each kind of MDB listening on the topic, the message is
              delivered exactly once (i.e., the message will be delivered exactly once to
              an instance in each named MDB pool listening on the topic)."
              If I have a set of MDB's scraping Messages from the JMS Queue, what is the
              load-balancing behavior?
              1) Consider a lightly-loaded system, where each MDB has sufficient time to
              process the message before the next one shows up in the queue. Will the same
              MDB get all the messages?
              2) Consider a heavily-loaded system, where each MDB has insufficient time to
              process the message before the next one shows up in the queue. How would you
              characterize the de facto load-balancing behavior? least-loaded?
              

    Have you tried the SAP WebDispatcher.  This should acomplish what you want. 
    http://help.sap.com/saphelp_nw04/helpdata/en/42/5cfd3b0e59774ee10000000a114084/frameset.htm

  • Load Balancing Directory Servers with Access Manager - Simple questions

    Hi.
    We are in the process of configuring 2 Access Manager instances (servers) accessing the same logical LDAP repository (comprising physically of two Directory Servers working together with Multi-Master Replication configured and tested) For doing this, we are following guide number 819-6258.
    The guide uses BigIP load balancer for load balancing the directory servers. However, we intend to use Directory Proxy Server. Since we faced some (unresolved) issues last time that we used DPS, there are some simple questions that I would be very grateful to have answers to:
    1. The guide, in section 3.2.10 (To configure Access Manager 1 with the Directory Server load balancer), talks about making changes at 4 places, and replacing the existing entry (hostname and port) with the load balancer's hostname and port (assuming that the load balancer has already been configured). It says that changes need not be made on Access Manager 2 since the LDAPs are in replication, and hence changes will be replicated at all places. However, the guide also states that changes have to be made in two files, namely AMConfig.properties, and the serverconfig.xml file. But these changes will not be reflected on Access Manager 2, since these files are local on each machine.
    Question 1. Do changes have to be made in AMConfig.properties and serverconfig.xml files on the other machine hosting Access Manager 2?
    Question 2: What is the purpose of putting these values here? Specifically, what is achieved by specifying the Directory server host and port in AMConfig.properties, as well as in serverconfig.xml?
    Question 3. In the HTTP console, there is the option of specifying multiple primary LDAP servers, as well as multiple secondary LDAP servers. What is the purpose of these? Are secondary servers attempted when none of the list in the primary list are accessible? Also, if there are multiple entries in the primary server list, are they accessed in a round robin fashion (hereby providing rudimentary load balancing), or are other servers accessed only when the one mentioned first is not reachable etc.?
    2. Since I do not have a load balancer setup yet, I tried the following deviation to the above, which, according to me, should have worked. If viewed in the HTTP console, LDAP / Membership / MSISDN and Policy configuration all pointed to the DS on host 1. When I changed all these to point to the directory server on host 2 (and made AMConfig.properties and serverconfig.xml on host 1 point to DS of host 2 as well), things should have worked fine, but apparently Access manager 1 could not be started. Error from Webserver:
    [14/Aug/2006:04:30:36] info (13937): WEB0100: Loading web module in virtual server [https-machine_1_FQDN] at [search]
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: Exception in thread "EventService" java.lang.ExceptionInInitializerError
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: at com.iplanet.services.ldap.event.EventServicePolling.run(EventServicePolling.java:132)
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: at java.lang.Thread.run(Thread.java:595)
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: Caused by: java.lang.InterruptedException
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: at com.sun.identity.sm.ServiceManager.<clinit>(ServiceManager.java:74)
    [14/Aug/2006:04:31:48] warning (13937): CORE3283: stderr: ... 2 more
    In effect, AM on 1 did not start. On rolling back the changes, things again worked like previously.
    Will be really grateful for any help / insight / experience on dealing with the above.
    Thanks!

    Update to the above, incase anyone is reading:
    We setup a similar setup in Windows, and it worked. Here is a detailed account of what was done:
    1. Host 1: Start installer, install automatically, chose Directory server, Directory Administration server, Directory Proxy server, Web server, Access Manager.
    All installed, and worked fine. (AMConfig.properties, serverconfig.xml, and the info in LDAP service, all pointed to HOST1:389)
    2. Host 2: Start installer, install automatically, chose Directory server, Directory Administration server, Directory Proxy server, Web server, Access Manager.
    All installed, and worked fine. (AMConfig.properties, serverconfig.xml, and the info in LDAP service, all pointed to HOST2:389)
    3. Host 1: Started replication. Set to Master
    4. Host 2: Started replication. Set to Master
    5. Host 1: Setup replication agreement to Host 2
    6. Host 2: Setup replication agreement to Host 1
    7. Initiated the remote replica from Host 1 ----> Host 2
    Note that since default installation uses abc.....xyz as the encryption key, setting this to same was not an issue.
    9. Started webserver for Host 1 and logged into AM as amadmin.
    10. Added Host 2 FQDN in DNS Aliases / Realms
    11. Added http://HOST2_FQDN:80 in the Platform server (instance) list.
    12. Started Host 2 webserver. Logged in AM on Host 2, things worked fine.
    At this stage, note the following:
    a) Host 1:
    AMConfig.properties file has
    com.iplanet.am.directory.host=host1_FQDN
    and
    com.iplanet.am.directory.port=389
    serverconfig.xml has:
    <Server name="Server1" host="host1_FQDN" port="389" type="SIMPLE" />
    b) Host 2:
    AMConfig.properties file has
    com.iplanet.am.directory.host=host2_FQDN
    and
    com.iplanet.am.directory.port=389
    serverconfig.xml has:
    <Server name="Server1" host="host2_FQDN" port="389" type="SIMPLE" />
    c) If one logs into AM, and checks LDAP servers for LDAP / Policy Configuration / Membership etc services, they all contain Host2_FQDN:389 (which makes sense, since replica 2 was initialized from 1)
    Returning back to the configuations:
    13. On Host 1, login into the Admin server console of the Directory server. Navigate to the DPS, and confgure the following:
    a) Network Group
    b) LDAP servers
    c) Load Balancing
    d) Change Group
    e) Action on-bind
    f) Allow all actions (permit modification / deletion etc.).
    g) any other configuations required - Am willing to give detailed steps if someone needs them to help me / themselves! :)
    So now, we have DPS configured and running on Host1:489, and distributing load to DS1 and DS2 on a 50:50 basis.
    14. Now, log into AM on Host 1, and instead of Host1_fqdn:389 (for DS) in the following places, specify Host1_fqdn:489 (for the DPS)--
    LDAP Authentication
    MSISDN server
    Membership Service
    Policy configuation.
    Verified that this propagated to the Policy Configuration service and the LDAP authentication service that are already registered with the default organization.
    15. Log out of AM. Following the documentation, modify directory.host and directory.port in AMConfig.properties to point to Host 1_FQDN and 489 respectively. Make this change in AMConfig.properties of both Host 1 as well as 2.
    16. Edit serverconfig.xml on both hosts, and instead of they pointing to their local directory servers, point both to host1_FQDN:489
    17. When you start the webserver, it will refuse to start. Will spew errors such as:
    [https-host1_FQDN]: Sun ONE Web Server 6.1SP5 B06/23/2005 17:36
    [https-host1_FQDN]: info: CORE3016: daemon is running as super-user
    [https-host1_FQDN]: info: CORE5076: Using [Java HotSpot(TM) Server VM, Version 1.5.0_04] from [Sun Microsystems Inc.]
    [https-host1_FQDN]: info: WEB0100: Loading web module in virtual server [https-host1_FQDN] at [amserver]
    [https-host1_FQDN]: warning: WEB6100: locale-charset-info is deprecated, please use parameter-encoding
    [https-host1_FQDN]: info: WEB0100: Loading web module in virtual server [https-host1_FQDN] at [ampassword]
    [https-host1_FQDN]: warning: WEB6100: locale-charset-info is deprecated, please use parameter-encoding
    [https-host1_FQDN]: info: WEB0100: Loading web module in virtual server [https-host1_FQDN] at [amcommon]
    [https-host1_FQDN]: info: WEB0100: Loading web module in virtual server [https-host1_FQDN] at [amconsole]
    [https-host1_FQDN]: warning: WEB6100: locale-charset-info is deprecated, please use parameter-encoding
    [https-host1_FQDN]: info: WEB0100: Loading web module in virtual server [https-host1_FQDN] at [search]
    [https-host1_FQDN]: warning: CORE3283: stderr: netscape.ldap.LDAPException: error result (32); matchedDN = dc=sun,dc=com; No such object (DN changed)
    [https-host1_FQDN]: warning: CORE3283: stderr: Got LDAPServiceException code=-1
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.services.ldap.DSConfigMgr.getConnection(DSConfigMgr.java:357)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.services.ldap.DSConfigMgr.getNewFailoverConnection(DSConfigMgr.java:314)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.services.ldap.DSConfigMgr.getNewConnection(DSConfigMgr.java:253)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.services.ldap.DSConfigMgr.getNewProxyConnection(DSConfigMgr.java:184)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.services.ldap.DSConfigMgr.getNewProxyConnection(DSConfigMgr.java:194)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ums.DataLayer.initLdapPool(DataLayer.java:1248)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ums.DataLayer.(DataLayer.java:190)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ums.DataLayer.getInstance(DataLayer.java:215)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ums.DataLayer.getInstance(DataLayer.java:246)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.sun.identity.sm.ldap.SMSLdapObject.initialize(SMSLdapObject.java:156)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.sun.identity.sm.ldap.SMSLdapObject.(SMSLdapObject.java:124)
    [https-host1_FQDN]: warning: CORE3283: stderr: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    [https-host1_FQDN]: warning: CORE3283: stderr: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    [https-host1_FQDN]: warning: CORE3283: stderr: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    [https-host1_FQDN]: warning: CORE3283: stderr: at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    [https-host1_FQDN]: warning: CORE3283: stderr: at java.lang.Class.newInstance0(Class.java:350)
    [https-host1_FQDN]: warning: CORE3283: stderr: at java.lang.Class.newInstance(Class.java:303)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.sun.identity.sm.SMSEntry.(SMSEntry.java:216)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.sun.identity.sm.ServiceSchemaManager.(ServiceSchemaManager.java:67)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.am.util.AMClientDetector.getServiceSchemaManager(AMClientDetector.java:219)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.am.util.AMClientDetector.(AMClientDetector.java:94)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.sun.mobile.filter.AMLController.init(AMLController.java:85)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:322)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3271)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.StandardContext.start(StandardContext.java:3747)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ias.web.WebModule.start(WebModule.java:251)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.StandardHost.start(StandardHost.java:652)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:355)
    [https-host1_FQDN]: warning: CORE3283: stderr: at org.apache.catalina.startup.Embedded.start(Embedded.java:995)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ias.web.WebContainer.start(WebContainer.java:431)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ias.web.WebContainer.startInstance(WebContainer.java:500)
    [https-host1_FQDN]: warning: CORE3283: stderr: at com.iplanet.ias.server.J2EERunner.confPostInit(J2EERunner.java:161)
    [https-host1_FQDN]: failure: WebModule[amserver]: WEB2783: Servlet /amserver threw load() exception
    [https-host1_FQDN]: javax.servlet.ServletException: WEB2778: Servlet.init() for servlet LoginLogoutMapping threw exception
    [https-host1_FQDN]: at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:949)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3478)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardContext.start(StandardContext.java:3760)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebModule.start(WebModule.java:251)
    [https-host1_FQDN]: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardHost.start(StandardHost.java:652)
    [https-host1_FQDN]: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:355)
    [https-host1_FQDN]: at org.apache.catalina.startup.Embedded.start(Embedded.java:995)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebContainer.start(WebContainer.java:431)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebContainer.startInstance(WebContainer.java:500)
    [https-host1_FQDN]: at com.iplanet.ias.server.J2EERunner.confPostInit(J2EERunner.java:161)
    [https-host1_FQDN]: ----- Root Cause -----
    [https-host1_FQDN]: java.lang.NullPointerException
    [https-host1_FQDN]: at com.sun.identity.authentication.UI.LoginLogoutMapping.init(LoginLogoutMapping.java:71)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:921)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3478)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardContext.start(StandardContext.java:3760)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebModule.start(WebModule.java:251)
    [https-host1_FQDN]: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardHost.start(StandardHost.java:652)
    [https-host1_FQDN]: at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    [https-host1_FQDN]: at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:355)
    [https-host1_FQDN]: at org.apache.catalina.startup.Embedded.start(Embedded.java:995)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebContainer.start(WebContainer.java:431)
    [https-host1_FQDN]: at com.iplanet.ias.web.WebContainer.startInstance(WebContainer.java:500)
    [https-host1_FQDN]: at com.iplanet.ias.server.J2EERunner.confPostInit(J2EERunner.java:161)
    [https-host1_FQDN]:
    [https-host1_FQDN]: info: HTTP3072: [LS ls1] http://host1_FQDN:58080 [i]ready to accept requests
    [https-host1_FQDN]: startup: server started successfully
    Success!
    The server https-host1_FQDN has started up.
    The server infact, didn't start up (nothing even listening on 58080).
    However, if AMConfig.properties is left as it originally was, and only serverconfig.xml files were changed as mentioned above, web servers started fine, and things worked all okay. (Alright, except for some glitches when viewed in /amconsole. If /amserver/console is accessed, all is good. Can this mean that all is still not well? I am not sure).
    So far so good. Now comes the sad part. When the same is done on Solaris 9, things dont work. You continue to get the above error, OR the following error, and the web server will refuse to start:
    Differences in Solaris and Windows are as follows:
    1. Windows hosts have 1 IP and hostname. Solaris hosts have 3 IPs and hostnames (for DS, DPS, and webserver).
    No other difference from an architectural perspective.
    Any help / insight on why the above is not working (and why the hell does the documentation seem so sketchy / insecure / incorrect).
    Thanks a bunch!

  • Load balancing problem

    We need a load balancing setup that share the load for many web applications on multiple backend servers, but we don&rsquo;t want the web apps to be activated on all backend servers at the same time. We want to configure all apps as &ldquo;lazy&rdquo; on all backend servers. They will then be activated when the first request to their DNS is made. Then the app is started on that backend server.
    We have hundreds of apps and each backend server will become very slow if all apps are activated on all backend servers. The preferred solution would therefore be to not call all DNS names on all backend servers but to share the balance based on the DNS name in the requests. Sticky-session or sticky source-IP won&rsquo;t be enough to solve this as they only stick to each user session.
    If User-A request www.siteA.com he may be redirected to backend server 1 and then be kept there. But if User-B then requests the same www.siteA.com he may be redirected to backend server 2 and then be kept there. This means that the web application for siteA will be activated and loaded in both the backend servers. When we host hundreds of sites this will be a problem. We may have hundreds of backend servers but they will all end up loading all web apps over time and get out of memory.
    The theory to get this work is a load balancer with the following logic:
    1.     A request for a certain DNS comes in. For example: www.siteA.com
    2.     Load balancer checks if this certain DNS has been redirected to a certain backend server before and if this server is alive
    2.1.     (If not redirected before): Redirect the request to the backend server with least load. Store the selected backend route based on the DNS name.
    2.2.     (If redirected before): Redirect the request to the assigned backend server for siteA.
    3.     If a backend server is down then all DNS requests to this server will be redirected to another backend server with least load. All requests to these DNS names will be assigned to this backend server instead.
    h3. Example of set up
    Many DNS to one IP
    192.168.1.1 www.siteA.com
    192.168.1.1 www.siteB.com
    192.168.1.1 www.siteC.com
    Frontend load balancer
    192.168.1.1 (load balancer)
    Backend app servers
    192.168.2.2 (App server 1)
    192.168.2.3 (App server 2)
    192.168.2.4 (App server 3)
    h3. Snapshot of servers during load
    App server 1
    www.siteA.com (Activated)
    www.siteB.com (Lazy)
    www.siteC.com (Lazy)
    App server 2
    www.siteA.com (Lazy)
    www.siteB.com (Activated)
    www.siteC.com (Lazy)
    App server 3
    www.siteA.com (Lazy)
    www.siteB.com (Lazy)
    www.siteC.com (Activated)

    Only from load balancing point of view cluster is not really needed.
    apart from session replication and failover capabilities, few more benefits are there with clustering only if you are using a web server also.
    Stuck threads can be due to lot's of problems like application issues, load issues etc, So first make sure you are getting stuck thread on both servers or only on one, if on one, then in this case your load balancing not working properly and sending more load to that server, and if you are getting stuck threads on both then try to add one more managed server.
    Regards
    Mukesh Negi
    http://weblogicserveradministration.blogspot.com

Maybe you are looking for

  • Problem in Virsa 4.0 in Mitigate Users

    Hi ... We have patched Virsa 4.0( 400_620) on our production server.  After patching, we are facing problem with Mitigate Users. After logging in CC4.0, under the Mitigation Tab, Mitigation Control ->Mitigate Users -> New Entries. Here when we add or

  • How to keep slideshow on one screen in a dual monitor setup

    The slideshow shows on my laptop screen which is fine, but iPhoto '09 commandeers my external monitor as well, making it black/blank and unusable during the slide show. How can I continue to work and use my external monitor while playing a slideshow

  • Using SLA to change the way of accounting

    Dear all, please help I need to setup account derivation rule in order to satisfy client needs. Regularly, accounting line is accounted on debit side, and when it go on credit side, I want to use some other account instead. Problem is with revaluatio

  • How to batch convert entire library from raw to jpeg

    I would like to know if it is possible to convert my entire iphoto library from mostly raw to jpeg and save as different library. The reason for this is ATV2 will only stream  8gigs at a time and it is annoying and inconvienent to go upstairs to chan

  • Problem with a Standby Database

    Hello, if have some problems with a special standby database. why special? because i try it whit another, which was newly build with oracle tools and everything works. I mean the redo log transfer and the log apply and everything. At first I try to u