Remedy fetches information from it's data dictionary (e.g.,
field_disp_prop, field, etc.), then processes it in chunks of 100,
500, or 1000.  So if you have a table field_dispprop that has 120k
records and 500 records are processed at a time, 15 seconds per chunk,
you end up with a start time that totals 3600 seconds (for that part
of the startup).

If you add a -t parameter to arserverd in the armonitor.conf file, a
special startup log file is created.  The log file will look something
like this:

Jul 09 2007 18:29:06.6577 <Startup> <TID:3086968512> Set up thread
control block with key = 0
Jul 09 2007 18:29:06.6582 <Startup> <TID:3086968512> Initialize thread
local storage block
Jul 09 2007 18:29:06.6583 <Startup> <TID:3086968512> Initialize
mutiple-byte environment
Jul 09 2007 18:29:06.6585 <Startup> <TID:3086968512> InstallDir =
/u01/arsystem/arsdev
Jul 09 2007 18:29:06.6587 <Startup> <TID:3086968512> Initialize Server utility
Jul 09 2007 18:29:06.6599 <Startup> <TID:3086968512> Initialize License Library
Jul 09 2007 18:29:06.6602 <Startup> <TID:3086968512> LicenseFilename =
/etc/arsystem/arsdev/arsystem.lic
Jul 09 2007 18:29:06.6603 <Startup> <TID:3086968512> Initialize
Language setting and locale
Jul 09 2007 18:29:06.6610 <Startup> <TID:3086968512> Initialize the
Decimal Math libray
Jul 09 2007 18:29:06.6610 <Startup> <TID:3086968512> Open shared catalog
Jul 09 2007 18:29:06.6648 <Startup> <TID:3086968512> Load encryption
shared library
Jul 09 2007 18:29:06.6653 <Startup> <TID:3086968512> Load encryption
static functions
Jul 09 2007 18:29:06.6654 <Startup> <TID:3086968512> Initialize
default configuration information
Jul 09 2007 18:29:06.6654 <Startup> <TID:3086968512> Create Mutexes
Jul 09 2007 18:29:06.6655 <Startup> <TID:3086968512> Initialize parse
environment
Jul 09 2007 18:29:06.6657 <Startup> <TID:3086968512> Initialize date
time information
Jul 09 2007 18:29:06.6659 <Startup> <TID:3086968512> Initialize
notification strings
Jul 09 2007 18:29:06.6659 <Startup> <TID:3086968512> Initialize RPC
queue type strings
Jul 09 2007 18:29:06.6660 <Startup> <TID:3086968512> Initialize filter strings
Jul 09 2007 18:29:06.6662 <Startup> <TID:3086968512> Initialize
escalation strings
Jul 09 2007 18:29:06.6662 <Startup> <TID:3086968512> Load system
configuration file
Jul 09 2007 18:29:06.6669 <Startup> <TID:3086968512>
arsCodeSet=windows-1252[0] arDbCodeSet=windows-1252[0]
Jul 09 2007 18:29:06.6670 <Startup> <TID:3086968512> Initialize pending lists
Jul 09 2007 18:29:06.6671 <Startup> <TID:3086968512> Create cache read
write lock
Jul 09 2007 18:29:06.6671 <Startup> <TID:3086968512> Create full text
status read write lock
Jul 09 2007 18:29:06.6672 <Startup> <TID:3086968512> Initialize fork proxy
Jul 09 2007 18:29:06.6672 <Startup> <TID:3086968512> Check licensing
Jul 09 2007 18:29:06.6693 <Startup> <TID:3086968512> Initialize user cache
Jul 09 2007 18:29:06.6707 <Startup> <TID:3086968512> Open log file
Jul 09 2007 18:29:06.6745 <Startup> <TID:3086968512> Initialize XML parser
Jul 09 2007 18:29:06.6782 <Startup> <TID:3086968512> Initialize thread list
Jul 09 2007 18:29:06.6784 <Startup> <TID:3086968512> Check multiple servers
Jul 09 2007 18:29:06.6787 <Startup> <TID:3086968512> Initialize dead thread list
Jul 09 2007 18:29:06.6790 <Startup> <TID:3086968512> Initialize timed calls
Jul 09 2007 18:29:06.6792 <Startup> <TID:3086968512>
CreateRPCQueue(min=1, max=1, rpc=390600)
Jul 09 2007 18:29:06.6793 <Startup> <TID:3086968512> Await cache ready...
Jul 09 2007 18:29:06.8988 <Startup> <TID:0030571424>
InitializeServerCache: LoadInitialSchemaInfo Begin
Jul 09 2007 18:29:11.7241 <Startup> <TID:0030571424> Begin LoadDisplayInfoList
Jul 09 2007 18:29:25.6076 <Startup> <TID:0030571424>
LoadDisplayInfoList: 500 rows
Jul 09 2007 18:29:42.7008 <Startup> <TID:0030571424>
LoadDisplayInfoList: 1000 rows

If you then review the sql that is sent to the db while the server is
unavailable, you will see this statement, followed by silence:

SELECT schemaId,fieldId,vuiId,propShort,propLong FROM field_dispprop
ORDER BY 1 ASC, 2 ASC, 3 ASC

What is happening here is that arserverd fetches the field display
property info, then processes it 500 records at a time.  Depending on
the size of your server (number of forms, views, fields, etc), there
may be a couple of sql statements that are followed by a pause.

What is happening internally is anyone's guess; I would guess that
they are processing X rows at a time to operate within certain memory
constraints, and 'maybe' in a horribly inefficient way.  Some things
are for certain though;
(1) a lot of data is transferred from the db to the arserver.  My test
server, which has 3293 rows in field_dispprop (pretty much a base
arserver install) sends 411K of data over the wire.
(2) the field_dispprop data is processed in chunks of 500 (at least on Linux).

Axton Grams


On 7/9/07, Andrew Hicox <[EMAIL PROTECTED]> wrote:
**
Hello everyone:

I've managed to get through the (incredibly flawed) solaris 10 arsystem 7
install.
This is 7.0.01 patch 2.

I'm using oracle 10G client library with a remote database on an oracle 10
Rapid Application Cluster.

So ... now the server is INCREDIBLY slow to start.

The server is configured to run on a TCP port (10000).
When I issue the 'arsystem start' command, I get the usual output on the
console indicating that the server has started.

However, the TCP port is not listening, and of course, no clients can
connect to the server.


If I wait (approx 7 minutes), I will see the following output on the
console:

  (ARNOTE 0)
   Server indicates that it's up.

 (ARNOTE 0)
   ARMonitor child process (pid:29595) started.
 ./arplugin

Action Request System(R)  Fork Daemon   Version 7.0.01 patch 002
200704021644
Copyright (c) 2000 - 2006 BMC Software, Inc.
All rights reserved.

Action Request System(R)  Plug-In Server   Version 7.0.01 patch 002
200704021644
 Copyright (c) 2001 - 2006 BMC Software, Inc.
All rights reserved.
 Loaded Web Services plugin properly

After the above, the TCP port opens up and clients can connect, and it seems
to work well enough.

 What I presume is happening here is that arserverd must issue some sort of
indication that it's completed start up so that arforkd and armonitor can do
their thing and start listeners and plugins, and that arserverd is for some
reason taking on average 7 minutes to do that.

I can't manage to get ANY sort of logging during the 7 minutes of mystery.
is there some way to figgure out what the heck is going on durring this
period of time (is it timing out DNS? is the db slow to respond? is it
waiting on disk access? what is it doing?).

We have an identical set up in our dev lab, with the exception that the
database server is not a RAC and it's installed on the same machine. The
startup is quite snappy on that setup.

There don't appear to be any issues with network latency between the remedy
server and the RAC.

Anyone ever seen this before?
Any suggestions?

 thanks,

Andrew

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where the Answers 
Are"

Reply via email to