+91-7678211866 info@peppertechsolutions.com
A deep-dive reference for PeopleSoft administrators — every Tuxedo server process in the Application Server domain, its exact role, tuning levers, and how to troubleshoot it when things go wrong.
If you've ever run psadmin and looked at the list of server processes for an Application Server domain, you've probably seen names like PSAPPSRV, PSQCKSRV, PSQRYSRV, PSSAMSRV, and a handful of others — and wondered exactly what each one does and whether you need them all.
This article answers that question comprehensively. We'll go process by process, explaining the purpose of each, when it fires, what happens if it goes down, and how to configure it correctly for your environment. This is the reference guide every PeopleSoft admin needs bookmarked.
The PeopleSoft Application Server is the middle tier in PeopleSoft's three-tier architecture. It sits between the web server (PIA on WebLogic) and the database (Oracle, SQL Server, or DB2), and it is responsible for all business logic execution.
When a user navigates a PeopleSoft page, submits a form, or runs a query, the request travels from the browser → WebLogic PIA → Application Server → Database, and the response travels back the same chain. The Application Server executes PeopleCode, enforces security, manages sessions, handles caching, and translates user actions into SQL that hits the database.
Figure 1: Request flow through the PeopleSoft three-tier architecture
Oracle Tuxedo (formerly BEA Tuxedo) is the transaction-processing middleware that runs the Application Server. It acts as a process manager, message router, and load balancer for all the server processes defined in your domain.
Every Application Server domain is defined by a configuration file — psappsrv.cfg — which Tuxedo reads at boot time to know which processes to start, how many instances of each to run, and what service queue each process listens on. Tuxedo also monitors each process and can automatically restart it if it crashes.
The BBL (Bulletin Board Liaison) is Tuxedo's master process. It maintains the in-memory bulletin board — a shared data structure that tracks all registered services, available server processes, and their load. Every other Tuxedo server process registers with the BBL at startup. If the BBL dies, the entire domain goes down. It is automatically restarted by the Tuxedo monitor daemon.
In multi-node Tuxedo configurations (MP mode), the PBBR bridges bulletin boards across machines. In single-node SHM (Shared Memory) mode — which most PeopleSoft environments use — PBBR is not active.
PSAPPSRV is the workhorse of the entire Application Server domain. It processes the vast majority of user-initiated requests — opening pages, saving records, performing component-level business logic, and interacting with the database.
When a user opens a PeopleSoft component, the PIA sends a request via JOLT to a PSAPPSRV process. PSAPPSRV loads the component definition, executes PeopleCode events (RowInit, FieldChange, SavePreChange, etc.), fetches data via SQL, and returns the rendered page.
Each instance handles one request at a time. Configure Min/Max Instances based on your concurrent user count — typically 1 instance per 40–60 concurrent users.
PSQCKSRV provides a dedicated fast lane for lightweight requests — search operations, prompt lookups, and auto-complete field fills — preventing them from competing with heavier PSAPPSRV requests.
Without PSQCKSRV, a quick department lookup would sit in the same queue as a complex payroll save. This dedicated process keeps the user experience responsive even under heavy load.
Do not disable PSQCKSRV to save resources — doing so causes prompt lookups to queue behind long-running operations, causing noticeable UI lag.
PSQRYSRV handles all requests from PeopleSoft Query Manager. When a user runs a PS Query interactively or via a scheduled process, the request routes to PSQRYSRV rather than PSAPPSRV.
This isolation is critical — PS Query requests are often long-running and can return large result sets. Isolating them prevents a report with hundreds of thousands of rows from starving out interactive users.
PSQRYSRV also handles Connected Queries (introduced in PeopleTools 8.51) which are even more resource-intensive, making this isolation even more valuable.
PSSAMSRV is the Application Server's security authority. It validates user authentication tokens, resolves permission lists, and caches security data so other processes don't need individual database calls to check permissions.
When a user logs in, PSSAMSRV validates their credentials, retrieves their roles and permission lists, and caches this security context. Subsequent requests reference the cache — significantly improving performance at scale.
PSSAMSRV also executes Signon PeopleCode — custom authentication logic (LDAP lookups, conditional access) fires here. If PSSAMSRV goes down, new logins will fail.
PSANALYTICSRV was introduced to support PeopleSoft's Pivot Grid framework — the embedded charting and analytics capability available from PeopleTools 8.52 onwards.
It performs analytics-layer processing — aggregating data across dimensions, computing totals, and preparing chart data — before returning it to PIA for rendering.
If your PeopleSoft implementation does not use Pivot Grids or embedded analytics, PSANALYTICSRV can be disabled to free system resources.
PSBRKHND is the Application Server-side entry point for Integration Broker synchronous messages. When the Integration Gateway receives an inbound SOAP or REST request, it passes the message to PSBRKHND via JOLT.
PSBRKHND routes the message to the appropriate service operation handler, manages the request-response cycle, and returns the response back through the gateway to the calling system.
It works in conjunction with PSPUBHND and PSSUBHND to form the complete Integration Broker processing pipeline.
PSSUBHND processes inbound asynchronous Integration Broker messages — messages that external systems have published into PeopleSoft integration queues that PeopleSoft needs to consume.
When an external system sends a data payload to PeopleSoft, the message lands in the IB queue. PSSUBHND picks up these queued messages and executes the registered subscription PeopleCode handler.
PSSUBHND processes messages asynchronously — the external sender does not wait for processing to complete, enabling high-volume integrations without bottlenecks.
PSPUBHND is the outbound counterpart to PSSUBHND. It handles dispatching of outbound asynchronous Integration Broker messages — messages PeopleSoft has published that need delivery to external systems.
When PeopleCode publishes a message (e.g., employee record saved, notifying payroll system), PSPUBHND picks it up from the queue, applies configured transforms, and dispatches it via the Integration Gateway.
PSPUBHND also handles retry logic for failed deliveries — if a target system is temporarily unavailable, it retries per the configured schedule so messages are never lost.
JOLT (Java Object Linking and Tuxedo) is the protocol PIA uses to communicate with the Application Server. The JOLT Station Listener (JSL) listens on a configured TCP port (default 9000) for incoming JOLT connections from WebLogic.
Each new connection is assigned to a JOLT Station Handler (JSH) which manages that session's lifecycle — multiplexing service requests to the appropriate Tuxedo server processes.
The JSL port (default 9000) must be open between the WebLogic server and App Server host — this is one of the most common firewall issues when setting up a new environment.
WSL and WSH handle direct TCP connections from PeopleSoft two-tier client tools — primarily Application Designer, Data Mover, and Configuration Manager when running in two-tier mode.
WSL listens on a configurable port (default 7000) for incoming tool connections. Each connection is assigned to a WSH instance for the duration of the session.
In modern environments most user interaction is browser-based. However, PeopleSoft admins and developers regularly use Application Designer in two-tier mode for development, configuration, and patching work.
| Process | Full Name | Primary Function | Typical Instances | Critical? |
|---|---|---|---|---|
BBL |
Bulletin Board Liaison | Tuxedo master process; service registry & domain health | 1 (always) | 🔴 Yes |
PSAPPSRV |
App Server | PeopleCode execution, interactive page processing | 3–10 | 🔴 Yes |
PSQCKSRV |
Quick Server | Prompt lookups, search dialogs, lightweight reads | 2–4 | 🟡 High |
PSQRYSRV |
Query Server | PS Query Manager & Connected Queries | 2–3 | 🟡 High |
PSSAMSRV |
Security Access Manager | Authentication, permission lists, security cache | 1–2 | 🔴 Yes |
PSANALYTICSRV |
Analytics Server | Pivot Grids, embedded analytics dashboards | 1–2 | 🟢 Optional |
PSBRKHND |
Broker Handler | Synchronous Integration Broker message routing | 1–3 | 🟡 If using IB |
PSSUBHND |
Subscription Handler | Inbound async IB messages & subscription handlers | 1–3 | 🟡 If using IB |
PSPUBHND |
Publication Handler | Outbound async IB message dispatch & retry | 1–3 | 🟡 If using IB |
JSL / JSH |
JOLT Station Listener/Handler | PIA → App Server TCP communication via JOLT | 1 JSL / N JSH | 🔴 Yes |
WSL / WSH |
Workstation Listener/Handler | Two-tier tool connections (App Designer, Data Mover) | 1 WSL / N WSH | 🟡 For dev/admin |
All App Server process settings live in psappsrv.cfg, located in $PS_CFG_HOME/appserv/<domain>/. Here are the most important parameters every admin should know:
; ── Database Connection ──────────────────────────────────
[Database Options]
DBName=HRPRD
DBType=ORACLE
UserId=PS
UserPswd={encrypted}
ConnectId=people
ConnectPswd={encrypted}
ServerName=
; ── Cache Settings ───────────────────────────────────────
[Cache Settings]
CacheBaseDir=/u01/ps/cfg/appserv/HRPRD/CACHE
EnableServerCache=1
CacheDir=0
; ── Trace / Debugging ────────────────────────────────────
[Trace]
TraceFile=/u01/ps/cfg/appserv/HRPRD/LOGS/appsrv_%SERVER%.tracesql
TraceSQL=0 ; Set to 15 to trace SQL (dev only — never in prod)
TracePC=0 ; Set to 4076 to trace PeopleCode (dev only)
; ── PSAPPSRV ─────────────────────────────────────────────
[PSAPPSRV]
Min Instances=3
Max Instances=7
Service Timeout=300
Recycle Count=10000
Allowed Consec Service Failures=2
; ── PSQCKSRV ─────────────────────────────────────────────
[PSQCKSRV]
Min Instances=2
Max Instances=4
Service Timeout=90
Recycle Count=10000
; ── PSQRYSRV ─────────────────────────────────────────────
[PSQRYSRV]
Min Instances=2
Max Instances=3
Service Timeout=600
Recycle Count=10000
; ── JOLT ─────────────────────────────────────────────────
[JOLT Listener]
Port=9000
Min Handlers=3
Max Handlers=10
Min Connections=3
Max Connections=50
A common rule of thumb is to start with 1 PSAPPSRV instance per 40–60 concurrent users and adjust based on monitoring. Use the PSADMIN "Server Status" menu or Tuxedo's tmadmin utility to watch queue depth — if requests are consistently waiting in the PSAPPSRV queue, increase Max Instances.
Each PSAPPSRV process consumes roughly 200–500 MB of RAM depending on your application's cache footprint. Size your App Server host with enough physical memory to accommodate all processes across all domains (including Process Scheduler) with headroom to spare. Swapping is fatal to App Server performance.
Setting a Recycle Count (e.g., 10,000 requests) causes processes to restart themselves periodically, which prevents memory fragmentation from accumulating over days or weeks of uptime. This is a lightweight operation — Tuxedo starts a replacement process before killing the recycled one, so there is no user-visible interruption.
The Service Timeout is the maximum number of seconds Tuxedo allows a single request to run before killing it. For PSAPPSRV, 300 seconds is the default and usually appropriate. For PSQRYSRV, you may want to extend this (e.g., 600–900 seconds) to accommodate long-running queries without premature timeout.
Check APPSRV_MMDD.LOG in the domain logs directory. The most common causes are incorrect database credentials in psappsrv.cfg, a missing or stale PID file, or a port conflict (another process already using the JSL or WSL port).
If PSAPPSRV processes are restarting frequently, look for Allowed Consec Service Failures being hit. This typically means a specific PeopleCode operation is throwing an unhandled exception and crashing the process. Enable TracePC temporarily in a non-production environment to identify the failing code path.
Use psadmin > 4 (Server Status) to see active vs. queued requests per process type. Sustained queue depth means you need more instances or your requests are running slower than expected. Profile slow SQL using TraceSQL=15 in dev to identify bottlenecks.
If users report permission changes not taking effect, flush the PSSAMSRV cache via psadmin > Purge Cache or bounce the PSSAMSRV process. This forces the security manager to reload all permission lists from the database on next request.
Check PSSUBHND and PSPUBHND process health first. Then review the IB Monitor at PeopleTools > Integration Broker > Monitor. Messages stuck in "Started" status usually indicate a handler crash — review the application server log for stack traces.
psadmin, select your domain, then choose option 4 (Server Status). This shows all configured processes, their current status (active/inactive), the number of running instances, and the current queue depth. You can also use Tuxedo's tmadmin tool directly for more detailed metrics.psadmin which handles the correct Tuxedo boot sequence. To stop cleanly, use the "Shutdown with timeout" option rather than killing processes manually — this allows in-flight requests to complete. Killing Tuxedo processes manually can corrupt the bulletin board and require a forced cleanup before the domain can restart.Learn to configure, tune, and troubleshoot every App Server process with hands-on lab access, real PeopleSoft environments, and expert-led instruction.
PepperTech Solutions
Typically replies within minutes
Any questions related to PeopleSoft Appserver Process?
WhatsApp Us
Online | Privacy policy
WhatsApp us