Showing posts with label Application Server. Show all posts
Showing posts with label Application Server. Show all posts
Friday, March 25, 2016
Interview with PeopleSoft Administrator Podcast
I recently recorded an interview with Dan Iverson and Kyle Benson for the PeopleSoft Administrator Podcast. It has been spread over three episodes. There is lots of other good stuff on the website and other episodes that are well worth listening to.
Labels:
Application Server
,
Podcast
,
psadmin.io
,
Temporary Records
Friday, September 04, 2015
Measuring Tuxedo Queuing in the PeopleSoft Application Server
Why Should I Care About Queuing?
Queuing in the application server is usually an indicator of a performance problem, rather than a problem in its own right. Requests will back up on the inbound queue because the application server cannot process them as fast as they arrive. This is usually seen on the APPQ which is serviced by the PSAPPSRV process, but applies to other server processes too. Common causes include (but are not limited to):- Poor performance of either SQL on the database or PeopleCode executed within the application server is extending service duration
- The application server domain is undersized for the load. Increasing the number of application server domains or application server process may be appropriate. However, before increasing the number of server process it is necessary to ensure that the physical server has sufficient memory and CPU to support the domain (if the application server CPU is overloaded then requests move from the Tuxedo queues to the operating system run queue).
- The application server has too many server processes per queue causing contention in the systems calls that enqueue and dequeue requests to and from IPC queue structure. A queue with more than 8-10 application server processes can exhibit this contention. There will be a queue of inbound requests, but not all the server processes will be non-idle.
What you do about queuing depends on the circumstances, but it is something that you do want to know about.
3 Ways to Measure Application Server Queuing
There are several ways to detect queuing in Tuxedo- Direct measurement of the Tuxedo domain using the tmadmin command-line interface. A long time ago I wrote a shell script tuxmon.sh. It periodically runs the printqueue and printserver commands on an application server and extracts comma separated data to a flat that can then be loaded into a database. It would have to be configured for each domain in a system.
- Direct Measurement with PeopleSoft Performance Monitor (PPM). Events 301 and 302 simulate the printqueue and printserver commands. However, event 301 only works from PT8.54 (and at the time of writing I am working on a PT8.53 system). Even then, the measurements would only be taken once per event cycle, which defaults to every 5 minutes. I wouldn't recommend increasing the sample frequency, so this will only ever be quite a coarse measurement.
- Indirect Measurement from sampled PPM transactions. Although includes time spent on the return queue and to unpack the Tuxedo message. This technique is what the rest of this article is about.
Indirectly Measuring Application Server Queuing from Transactional Data
Every PIA and Portal request includes a Jolt call made by the PeopleSoft servlet to the domain. The Jolt call is instrumented in PPM as transaction 115. Various layers in the application server are instrumented in PPM, and the highest point is transaction 400 which where the service enters the PeopleSoft application server code. Transaction 400 is always the immediate child of transaction 115. The difference in the duration of these transactions is the duration of the following operations:- Transmit the message across the network from the web server to the JSH. There is a persistent TCP socket connection.
- To enqueue the message on the APPQ queue (including writing the message to disk if it cannot fit on the queue).
- Time spent in the queue
- To dequeue the message from the queue (including reading the message back from disk it was written there).
- To unpack the Tuxedo message and pass the information to the service function
- And then repeat the process for the return message back to the web server via the JSH queue (which is not shown in tmadmin)
Some simple arithmetic can convert this duration into an average queue length. A queue length of n means that n requests are waiting in the queue. Each second there are n seconds of queue time. So the number of seconds per second of queue time is the same as the queue length.
I can take all the sampled transactions in a given time period and aggregate the time spent between transactions 115 and 400. I must multiply it by the sampling ratio, and then divide it by the duration of the time period for which I am aggregating it. That gives me the average queue length for that period.
This query aggregates queue time across all application server domains in each system. It would be easy to examine a specific application server, web server or time period.
REM https://blog.go-faster.co.uk/2015/09/measuring-tuxedo-queuing-in-peoplesoft.html
WITH c AS (
SELECT B.DBNAME, b.pm_sampling_rate
, TRUNC(c115.pm_agent_Strt_dttm,'mi') pm_agent_dttm
, A115.PM_DOMAIN_NAME web_domain_name
, SUBSTR(A400.PM_HOST_PORT,1,INSTR(A400.PM_HOST_PORT,':')-1) PM_tux_HOST
, SUBSTR(A400.PM_HOST_PORT,INSTR(A400.PM_HOST_PORT,':')+1) PM_tux_PORT
, A400.PM_DOMAIN_NAME tux_domain_name
, (C115.pm_trans_duration-C400.pm_trans_duration)/1000 qtime
FROM PSPMAGENT A115 /*Web server details*/
, PSPMAGENT A400 /*Application server details*/
, PSPMSYSDEFN B
, PSPMTRANSHIST C115 /*Jolt transaction*/
, PSPMTRANSHIST C400 /*Tuxedo transaction*/
WHERE A115.PM_SYSTEMID = B.PM_SYSTEMID
AND A115.PM_AGENT_INACTIVE = 'N'
AND C115.PM_AGENTID = A115.PM_AGENTID
AND C115.PM_TRANS_DEFN_SET=1
AND C115.PM_TRANS_DEFN_ID=115
AND C115.pm_trans_status = '1' /*valid transaction only*/
--
AND A400.PM_SYSTEMID = B.PM_SYSTEMID
AND A400.PM_AGENT_INACTIVE = 'N'
AND C400.PM_AGENTID = A400.PM_AGENTID
AND C400.PM_TRANS_DEFN_SET=1
AND C400.PM_TRANS_DEFN_ID=400
AND C400.pm_trans_status = '1' /*valid transaction only*/
--
AND C115.PM_INSTANCE_ID = C400.PM_PARENT_INST_ID /*parent-child relationship*/
AND C115.pm_trans_duration >= C400.pm_trans_duration
), x as (
SELECT dbname, pm_agent_dttm
, AVG(qtime) avg_qtime
, MAX(qtime) max_qtime
, c.pm_sampling_rate*sum(qtime)/60 avg_qlen
, c.pm_sampling_rate*count(*) num_services
FROM c
GROUP BY dbname, pm_agent_dttm, pm_sampling_rate
)
SELECT * FROM x
ORDER BY dbname, pm_agent_dttm
- Transactions are aggregated per minute, so the queue time is divided by 60 at the end of the calculation because we are measuring time in seconds.
Is this calculation and assumption reasonable?
The best way to validate this approach would be to measure queuing directly using tmadmin. I could also try this on a PT8.54 system where event 301 will report the queuing. This will have to wait for a future opportunity.However, I can compare queuing with the number of busy application servers at reported by PPM event 302 for the CRM database. Around 16:28 queuing all but disappears. We can see that there were a few idle application servers which is consistent with the queue being cleared. Later the queuing comes back, and most of the application servers are busy again. So it looks reasonable.
Labels:
Application Server
,
Performance Monitor
,
Tuxedo
,
Tuxedo Queuing
Thursday, January 02, 2014
Minimum Number of Recycling Server Processes
When I rebuilt my demo system (some while ago) with PeopleTools 8.52, I noticed a new message generated by ubbgen in PeopleTools 8.52 when the minimum number of recycling servers is set to 1.
What Produces the Message?
ubbgen is the PeopleSoft utility that merges the template file (psappsrv.ubx) with the configuration file (psappsrv.cfg) file to produce the Tuxedo configuration file (psappsrv.ubb) and the environment file (psappsrv.env). It is invoked by psadmin during Tuxedo domain configuration.
The message is produced at this time.WARNING: PSAPPSRV, PSSAMSRV, PSQRYSRV, PSQCKSRV, PSPPMSRV and PSANALYTICSRV are configured with Min instance set to 1.
To avoid loss of service, configure Min instance to at least 2.
What Produces the Message?
ubbgen is the PeopleSoft utility that merges the template file (psappsrv.ubx) with the configuration file (psappsrv.cfg) file to produce the Tuxedo configuration file (psappsrv.ubb) and the environment file (psappsrv.env). It is invoked by psadmin during Tuxedo domain configuration.
ubbgen -t psappsrv.ubx -c psappsrv.cfg -o psappsrv.ubb -v psappsrv.val -q y -u PUBSUB=n/QUICKSRV=n/QUERYSRV=n/JOLT=y/JRAD=n/DBGSRV=n/RENSRV=n/MCF=n/PPM=n/ANALYTICSRV=n
Recycling ServersSeveral servers in a PeopleSoft application Server domain recycle after they have handled a number of services. Recycling is a PeopleSoft behaviour and not a Tuxedo behaviour. It is controlled by the Recycle Count parameter in the PeopleSoft configuration file (psappsrv.cfg). This parameter is not referenced in the template file (psappsrv.ubx).
[PSAPPSRV]
;=========================================================================
; Settings for PSAPPSRV
;=========================================================================
;-------------------------------------------------------------------------
; UBBGEN settings
Min Instances=2
Max Instances=3
Service Timeout=0
;-------------------------------------------------------------------------
; Number of services after which PSAPPSRV will automatically restart.
; If the recycle count is set to zero, PSAPPSRV will never be recycled.
; The default value is zero.
; Dynamic change allowed for Recycle Count
Recycle Count=1000
PeopleSoft first started using BEA Tuxedo (as it was then) in PeopleTools 6 to remote call Cobol processes in the Financials product. The Application Server was introduced in PeopleTools 7. PSAPPSRV had recycling from the first release. Legend has it that the engineers at Tuxedo where horrified when they heard that PeopleSoft had introduced recycling to resolve problems created by dynamic memory allocation and deallocation by the Panel Processor (now known as the component Processor).
Tuxedo servers are supposed to be robust, long lived and not require to be regularly restarted. Hence the server restart functionality in Tuxedo is only designed to be invoked in the rare occasions when a server process crashes. Server processes are started by the Restart Server (restartsrv), and only one process can be started concurrently.
The minimum of 2 applies to the following servers because they can both recycle and be configured to spawn additional instances on demand PSAPPSRV, PSANALYTICSRV, PSSAMSRV, PSQCKSRV, PSQRYSRV, PSPUBHND, PSSUBHND, PSBRKHND. In the delivered configuration file for the developer domain, recycling is disabled for several servers by setting the recycle count to zero. However, the message is produced by ubbgen irrespective of the value of recycle count.
The message handler servers can be set to have just a single instance, without producing any warning. They only consume messages from the dispatcher processes so their temporary disappearance will not cause user errors.
What Happens When The Only Server Recycles?
Tuxedo server processes consume service requests placed on queues. When a server starts up, it advertises its services on the Bulletin Board. Tuxedo processes that submit requests (mostly the JSH processes, but also the message dispatcher processes, the Process Scheduler) look up on the Bulletin Board where a service is advertised and place it on the appropriate queue.
When a server process performs an orderly shutdown (as it does during a recycle) it removes the adverts for its services (the command is unadvertise). If a process crashes the Bulletin Board Liaison process (BBL) detects the crash and cleans the Bullentin Board. When all services advertised on a queue have been unadvertised, the queue is also removed from the Bulletin Board. If the process submitting the service request cannot find any server advertising a service it generates an error.
074001.GO-FASTER-6!JSH.3124.5736.-2: JOLT_CAT:1043: "ERROR: tpacall() call failed, tperrno = 6"
This is why the minimum is 2. If you recycled the only server process, it is possible for someone to produce this error (see also Minimum Number of Application Server Processes).Should I set the minimum higher than 2?
The number of services handled by different server processes on the same queue is usually uneven because the service is handled by the first free server. Therefore it is rare for the processes will reach the recycle count simultaneously, but it can still happen. Even in a quiet system that doesn't have sufficient activity to justify 3 PSAPPSRVs, I prefer to set the minimum number of servers to at least 3.
Debugger
NB: If the debugger process is enabled then PSADMIN will force the minimum and maximum number of PSAPPSRV processes to at least 2. ubbgen will actually update psappsrv.cfg.
Warning: PSAPPSRV Min Instances too small, setting to 2 for debugger.
Labels:
Application Server
,
Tuxedo
Thursday, June 17, 2010
Configuring Large PeopleSoft Application Servers
Occasionally, I see very large PeopleSoft systems running on large proprietary Unix servers with many CPUs. In an extreme case, I needed to configure application server domains with up to 14 PSAPPSRV processes per domain (each domain was on a virtual server with 8 CPU cores, co-resident with the Process Scheduler).
The first and most important point to make is don't have too many server processes. If you run out of CPU or if you fully utilise all the physical memory and start to page memory from disk, then you have too many server processes. It is better to queue on a Tuxedo queue rather than the CPU run queue, or disk queue during paging.
Multiple APPQ/PSAPPSRV Queues
A piece of advice that I originally got from BEA (prior to their acquisition by Oracle) was that you should not have more than 10 server processes on a single queue in Tuxedo. Otherwise, you are likely to suffer from contention on the IPC queue structure because processes must acquire exclusive access to the queue in order to enqueue a service request to the queue or dequeue a request from it. Instead multiple queues should be configured that are both serviced by the same server processes and so advertise the same services.
If you look at the 'large' template delivered by PeopleSoft, you will see that it produces a domain that runs between 9 and 15 PSAPPSRV processes. This does not conform to the advice I received from BEA. I repeated this advice in PeopleSoft for the Oracle DBA. Though I cannot now find the source for it, I stand by it. I have recently been able to conduct some analysis to confirm it on a real production system. Domains with two queues of 8 PSAPPPSRV server process each out performed domains with only a single queue.
Load Balancing Across Queues
If the same service is advertised on multiple queues, then Tuxedo recommended that you should specify realistic service loads and use Tuxedo load balancing to determine where to enqueue requests. I want to emphasise that I am talking about load balancing across queues within a Tuxedo domain, and not about load balancing across Tuxedo domains in the web server.
This is what the Tuxedo documentation says about load balancing:
"Load balancing is a technique used by the BEA Tuxedo system for distributing service requests evenly among servers that offer the same service. Load balancing avoids overburdening some servers while leaving others idle or infrequently used. Before sending a request to a service routine, the BEA Tuxedo system identifies all servers capable of handling the request and selects the one most appropriate for maintaining a balanced load across all the servers in the configuration.
You can control whether a load-balancing algorithm is used on the system as a whole. Such as algorithm should be used only when necessary, that is, only when a service is offered by servers that use more than one queue. Services offered by only one server, or by multiple servers in a Multiple Server, Single Queue (MSSQ) do not need load balancing. The LDBAL parameter for these services should be set to N. In other cases, you may want to set LDBAL to Y."
It doesn't state that load balancing is mandatory for multi-queue domains, and only hints that it might improve performance. If load balancing is not used, the listener process puts the messages on the first empty queue (one where no requests are queued). If all queues have requests the listener round-robins between the queues.
You could consider giving ICScript, GetCertificate and other services with small service times a higher Tuxedo Service priority. This means they jump the queue 9 times out of 10. ICScript is generally used during navigation, GetCertificate is used at log on. Giving these services higher priority will mean they perform well even when the system is busy. Users often need to do several mouse clicks to navigate around the system, but these services are usually quick. This will improve the user experience without changing the overall performance of the system.
Data
I have recently been able to test the performance of a domains with up to 14 PSAPPSRVs on a single IPC queue, versus domains with two queues with up to 7 PSAPPSRVs each, both with and without Tuxedo queue balancing. These results come from a real production system where the multiple queue configuration was implemented on 2 of the 4 application servers. The system has a short-lived weekly peak period of on-line processing. During that time Tuxedo spawns additional PSAPPSRV processes, and so I get different sets of times for different numbers of process.
The timings are produced from transactions sampled by PeopleSoft Performance Monitor. I capture the number of spawned processes using the Tuxmon scripts on my website that use tmadmin to collect Tuxedo metrics.
The first thing to acknowledge is that this data is quite noisy because it comes from a real production system, and the effects we are looking for are quite small.
I am satisfied that the domains with two PSAPPSRV queues generally perform better under high load, than those under 1. Not only does the queue time increase on the single queue domain, the service time also increases.
However, I cannot demonstrate that Tuxedo Load Balancing makes a significant difference in either direction.
My results suggest that domains with multiple queues for requests handled by PSAPPSRV process perform slightly better without load balancing if there is no queue of requests, but perform slightly better if there is a queue of pending requests. However, the difference is small. It is not large enough to be statistically significant in my test data.
Conclusion
If you have a busy system with lots of on-line users, and sufficient hardware to resource it, then you might reach a point when you need more than 10 PSAPPSRVs. In which case, I recommend that you configure multiple Tuxedo queues.
On the whole, I would recommend that Tuxedo Load Balancing should be configured. I would not expect it to improve performance, but it will not degrade it either.
The first and most important point to make is don't have too many server processes. If you run out of CPU or if you fully utilise all the physical memory and start to page memory from disk, then you have too many server processes. It is better to queue on a Tuxedo queue rather than the CPU run queue, or disk queue during paging.
Multiple APPQ/PSAPPSRV Queues
A piece of advice that I originally got from BEA (prior to their acquisition by Oracle) was that you should not have more than 10 server processes on a single queue in Tuxedo. Otherwise, you are likely to suffer from contention on the IPC queue structure because processes must acquire exclusive access to the queue in order to enqueue a service request to the queue or dequeue a request from it. Instead multiple queues should be configured that are both serviced by the same server processes and so advertise the same services.
If you look at the 'large' template delivered by PeopleSoft, you will see that it produces a domain that runs between 9 and 15 PSAPPSRV processes. This does not conform to the advice I received from BEA. I repeated this advice in PeopleSoft for the Oracle DBA. Though I cannot now find the source for it, I stand by it. I have recently been able to conduct some analysis to confirm it on a real production system. Domains with two queues of 8 PSAPPPSRV server process each out performed domains with only a single queue.
Load Balancing Across Queues
If the same service is advertised on multiple queues, then Tuxedo recommended that you should specify realistic service loads and use Tuxedo load balancing to determine where to enqueue requests. I want to emphasise that I am talking about load balancing across queues within a Tuxedo domain, and not about load balancing across Tuxedo domains in the web server.
This is what the Tuxedo documentation says about load balancing:
"Load balancing is a technique used by the BEA Tuxedo system for distributing service requests evenly among servers that offer the same service. Load balancing avoids overburdening some servers while leaving others idle or infrequently used. Before sending a request to a service routine, the BEA Tuxedo system identifies all servers capable of handling the request and selects the one most appropriate for maintaining a balanced load across all the servers in the configuration.
You can control whether a load-balancing algorithm is used on the system as a whole. Such as algorithm should be used only when necessary, that is, only when a service is offered by servers that use more than one queue. Services offered by only one server, or by multiple servers in a Multiple Server, Single Queue (MSSQ) do not need load balancing. The LDBAL parameter for these services should be set to N. In other cases, you may want to set LDBAL to Y."
It doesn't state that load balancing is mandatory for multi-queue domains, and only hints that it might improve performance. If load balancing is not used, the listener process puts the messages on the first empty queue (one where no requests are queued). If all queues have requests the listener round-robins between the queues.
You could consider giving ICScript, GetCertificate and other services with small service times a higher Tuxedo Service priority. This means they jump the queue 9 times out of 10. ICScript is generally used during navigation, GetCertificate is used at log on. Giving these services higher priority will mean they perform well even when the system is busy. Users often need to do several mouse clicks to navigate around the system, but these services are usually quick. This will improve the user experience without changing the overall performance of the system.
Data
I have recently been able to test the performance of a domains with up to 14 PSAPPSRVs on a single IPC queue, versus domains with two queues with up to 7 PSAPPSRVs each, both with and without Tuxedo queue balancing. These results come from a real production system where the multiple queue configuration was implemented on 2 of the 4 application servers. The system has a short-lived weekly peak period of on-line processing. During that time Tuxedo spawns additional PSAPPSRV processes, and so I get different sets of times for different numbers of process.
The timings are produced from transactions sampled by PeopleSoft Performance Monitor. I capture the number of spawned processes using the Tuxmon scripts on my website that use tmadmin to collect Tuxedo metrics.
| 1 Queue | 2 Queue | ||||
Server Processes per Queue | Number of Services | Mean ICPanel Service Time | Server Processes per Queue | Number of Services | Mean ICPanel Service Time |
|---|---|---|---|---|---|
6 | 2,616 | 1.33 | 3 | 6945 | 1.05 |
7 | 1,949 | 0.97 | |||
8 | 1,774 | 1.06 | 4 | 7595 | 1.16 |
9 | 1,713 | 1.02 | |||
10 | 1,553 | 1.25 | 5 | 4629 | 1.17 |
11 | 1,250 | 1.30 | |||
12 | 969 | 1.32 | 6 | 3397 | 1.16 |
13 | 427 | 1.21 | |||
14 | 1,057 | 1.10 | 7 | 3445 | 1.13 |
Total
| 13,308 | 1.17 | 26011 | 1.13 | |
The first thing to acknowledge is that this data is quite noisy because it comes from a real production system, and the effects we are looking for are quite small.
I am satisfied that the domains with two PSAPPSRV queues generally perform better under high load, than those under 1. Not only does the queue time increase on the single queue domain, the service time also increases.
However, I cannot demonstrate that Tuxedo Load Balancing makes a significant difference in either direction.
My results suggest that domains with multiple queues for requests handled by PSAPPSRV process perform slightly better without load balancing if there is no queue of requests, but perform slightly better if there is a queue of pending requests. However, the difference is small. It is not large enough to be statistically significant in my test data.
Conclusion
If you have a busy system with lots of on-line users, and sufficient hardware to resource it, then you might reach a point when you need more than 10 PSAPPSRVs. In which case, I recommend that you configure multiple Tuxedo queues.
On the whole, I would recommend that Tuxedo Load Balancing should be configured. I would not expect it to improve performance, but it will not degrade it either.
Labels:
Application Server
,
Load Balancing
,
Tuxedo
Thursday, March 12, 2009
Minimum Number of Application Server Processes
I have had two conversations recently about what happens if you have only a single PSAPPSRV process in a domain. One of which was on the DBA Forum.
Basically, you should always have at least two instances of any server process that has a non-zero recycle count.
It is rare to see only one PSAPPSRV process in Application Server domains that support the PIA, but customers who use the Integration Broker often have separate Application Server domains for the publication and subscription servers. These domains are often not heavily used, in which case they have been configured with just one of each server process.
This advice applies to the PSAPPSRV, PSQRYSRV, PSBRKHND, PSSUBHND, PSANALYTICSRV servers
The exceptions are
It is quite simple to demonstrate this in PeopleSoft. In my demo system, I set the recycle count on PSAPPSRV to just 10 and the minimum number of servers to 1.
It is not long until the PSAPPSRV process recycles, and you get this message in the application server log.
You can also see in the shutdown message in the TUXLOG file.
The last line is the error message from the JSH process that cannot enqueue the service request because the Application Server is down. If you suspect that you have been getting this problem, look for that error message.
Hence, you should always have at least two PSAPPSRV processes, so that the queue is not removed, and the other server(s) can handle requests. Of course, there is a small chance that two servers could recycle at the same time, but that is very unlikely.
Basically, you should always have at least two instances of any server process that has a non-zero recycle count.
It is rare to see only one PSAPPSRV process in Application Server domains that support the PIA, but customers who use the Integration Broker often have separate Application Server domains for the publication and subscription servers. These domains are often not heavily used, in which case they have been configured with just one of each server process.
This advice applies to the PSAPPSRV, PSQRYSRV, PSBRKHND, PSSUBHND, PSANALYTICSRV servers
The exceptions are
- PSSAMSRV is only used by Windows clients in 3-tier mode (nVision and PS/Query)
- PSMSGDSP, only a single process can be configured
- PSAESRV, because in the Process Scheduler each PSAESRV has its own queue.
It is quite simple to demonstrate this in PeopleSoft. In my demo system, I set the recycle count on PSAPPSRV to just 10 and the minimum number of servers to 1.
[PSAPPSRV]
;=========================================================================
; Settings for PSAPPSRV
;=========================================================================
;-------------------------------------------------------------------------
; UBBGEN settings
Min Instances=1
Max Instances=2
Service Timeout=300
;-------------------------------------------------------------------------
; Number of services after which PSAPPSRV will automatically restart.
; If the recycle count is set to zero, PSAPPSRV will never be recycled.
; The default value is 5000.
; Dynamic change allowed for Recycle Count
Recycle Count=10
It is not long until the PSAPPSRV process recycles, and you get this message in the application server log.
PSAPPSRV.2140 (10) [03/11/09 06:55:15 PTWEBSERVER@GO-FASTER-4](0) Recycling server after 10 services
You can also see in the shutdown message in the TUXLOG file.
The last line is the error message from the JSH process that cannot enqueue the service request because the Application Server is down. If you suspect that you have been getting this problem, look for that error message.
065655.GO-FASTER-4!BBL.2444.1760.0: LIBTUX_CAT:541: WARN: Server APPSRV/1 terminated
065655.GO-FASTER-4!BBL.2444.1760.0: LIBTUX_CAT:550: WARN: Cleaning up restartable server APPSRV/1
065655.GO-FASTER-4!cleanupsrv.1756.1204.-2: 03-11-2009: Tuxedo Version 8.1, 32-bit
065655.GO-FASTER-4!cleanupsrv.1756.1204.-2: CMDTUX_CAT:542: ERROR: Cannot find service to which to forward request
065655.GO-FASTER-4!cleanupsrv.1756.1204.-2: server APPSRV/1: CMDTUX_CAT:551: INFO: server removed
065655.GO-FASTER-4!JSH.2192.4860.-2: JOLT_CAT:1043: "ERROR: tpcall() call failed, tperrno = 6"
Hence, you should always have at least two PSAPPSRV processes, so that the queue is not removed, and the other server(s) can handle requests. Of course, there is a small chance that two servers could recycle at the same time, but that is very unlikely.
Labels:
Application Server
,
PeopleSoft
Thursday, August 14, 2008
How to Clear the Application Server Cache Without Shutting it Down
Updated 4.9.2008: It is often necessary to clear the physical cache files on the PeopleSoft application server. You would think that after all the length of time that PeopleTools has been around, that development would have sorted out the problems in object version numbering. Sometimes, recently migrated changes do not take effect until the cache is cleared. Global Support will nearly always ask you to clear the cache if you are experiencing any kind of problem in the PIA.
Normally, you would shut down the application server, delete the physical cache directories and restart the application server.
From PeopleTools 8.48, each Application server process can only use one dedicated set of physical cache files that is in a directory whose name includes the name and ID number of the server, (previously the server process could use any unlock set cache directories). This allowed PeopleSoft to add an option to the psadmin utility to trigger each PSAPPSRV process to clear out its own physical cache (my thanks to the anonymous question asked after the original version of this posting that reminded me). This option also causes each server process to be recycled. It is the recommended and supported way to clear the physical cache files.
This can also be invoked from the command line
However, even in previous versions, there has always been a way to invalidate all physical cache files. Any cached object older than the value of LASTREFRESHDTTM on the table PSSTATUS (it was on a different table prior to PeopleTools 8) is purged from the cache when the process that references that cache starts. Therefore, if that value is updated to the current time, the entire cache will be purged.
Sometimes, developers also have to clear the physical cache on their clients used by the Application Designer. Updating PSSTATUS also clears two-tier client caches. In fact, this behaviour is left over from the days when PeopleTools was a two-tier application, and it was necessary to clear cache files on users' desktop computers.
psadmin -c purge -d <domain> [-noarch | -arch <archive_directory>] [-log <"log_comments">] where 'domain' specifies domain name in PS_HOME and 'archive_directory' specifies location to which to quarantine the purged cache, 'log_comments' specifies any comments to be added to the purge cache log entry
UPDATE PSSTATUS SET LASTREFRESHDTTM = SYSDATE / COMMIT /
- If you have multiple Application Servers on a single database, then you can shut each one down in turn without any loss of server. The users will fail over to the surviving servers. However, this can result in the load being unevenly distributed and could overload one server.
- In small environments, and this includes most development and test systems, there is only a single application server. Shutting down an application server requires downtime and can be disruptive.
Labels:
Application Server
,
Cache
Subscribe to:
Posts
(
Atom
)
