T Techclick ← All lessons
Zscaler · ZIA + ZPA · Interactive lesson

Isolate ZIA and ZPA slowness hop by hop

Classroom masterclass turned into a working desk: never start with “Zscaler is slow.” Name the segment, measure it, then assign the owner — with PDF evidence, photos, and a scored quiz.

22 min read · L2 primary · Quiz at end

After this page you can

Lessons · Troubleshoot & Ops · Zscaler

Quick answer

Never start with “Zscaler is slow.” Convert the ticket into which segment is slow: endpoint, LAN/Wi-Fi, ISP, Z-Tunnel (DTLS/TLS), Service Edge, inspection, destination (ZIA) or App Connector → backend (ZPA). Measure each hop. Observation → Hypothesis → Evidence → Root cause. Speedtest.net is not proof.

Hero · two destinations, one path question
Laptop traffic splits through a security cloud to internet and a private app
Internet and SaaS go ZIA. Private apps go ZPA. Slowness is a hop problem, not a brand problem.

Why “Zscaler is slow” is the wrong ticket

Priya in Pune opens Teams. It crawls. The helpdesk sees ZCC green and types “Zscaler issue” into the ticket. That sentence has no owner. ZIA and ZPA share a laptop and an ISP, then they split. You cannot TAC a feeling.

Performance troubleshooting is path isolation. Each hop gets a measurement and an owner before anyone changes a forwarding profile or disables SSL inspection.

Say this out loud

I do not fix Zscaler. I name the slow segment, prove it, then assign the owner.

Decision feel · five hops
Decision diamond splitting Endpoint, ISP, Tunnel, Cloud, Backend
If you cannot point to one hop, you are still guessing.

Mental model — two products, one laptop

ZIA is Internet Access. ZCC captures eligible internet/SaaS traffic and sends it in Z-Tunnel 2.0 to a ZIA Public Service Edge. Policy, SSL inspection, DLP, and threat scan run inline, then ZIA forwards to the destination.

ZPA is Private Access. The user never sits on the LAN. The browser talks to a synthetic IP. A ZPA Service Edge brokers a microtunnel. An App Connector dials the real backend outbound. Traceroute to the synthetic IP does not test the application.

Pre-train these words before the runbook:

Flow 1 · pick ZIA or ZPA first
Laptop Internet or private app? ZIA — internet / SaaS ZCC → Z-Tunnel 2.0 → ZIA Edge → destination Worry: ISP, DTLS, inspection, CDN ZPA — private app ZCC → ZPA Edge → App Connector → backend Worry: connector health, backend RTT

Rule from the masterclass: microsoft.com is ZIA. erp.internal.example is ZPA. Do not mix desks.

AttributeZIAZPA
TrafficInternet, SaaS, cloud appsInternal / private apps
Examplewww.microsoft.comerp.internal.example
App ConnectorNoYes — outbound to cloud and to backend
Synthetic IPNoYes — client never sees 192.168.1.101
First worryTunnel, ISP, destination latencyConnector health, backend reachability

Source: Techclick classroom PDF Zscaler ZIA & ZPA — End-to-End Slowness & Performance Troubleshooting Masterclass, ZIA vs ZPA comparison table.

Where slowness can live

Scope first. One user on one laptop is rarely a Zscaler cloud incident. Many users on one ISP prefix, or many users on one Service Edge, change the owner.

Flow 2 · fault domains and owners
1–3 EndpointIT / network 4–5 ISPCarrier / transit 6–9 TunnelZscaler / TAC 10–12 DestSaaS / CDN 13–15 ZPAConnector / app Never assign a zone without measuring it.

Zones 6–9 need ZCC evidence before TAC. Zones 13–15 exist only for ZPA.

ZIA journey feel
Four glass panels: laptop, tunnel, edge, SaaS
ZIA request: DNS → ZCC intercept → Z-Tunnel 2.0 → Service Edge RTT → SSL/policy → destination TTFB.

How to choose the first test

If you see…Do this firstDo not
One user, ZCC on, same Wi-FiHotspot test + clean laptop on same LANOpen TAC for a cloud outage
Many Jio users, high RTT to EdgeRead actual Service Edge in ZCC; compare hotspot ISPDeclare MaxMind GeoIP as root cause
Stalls only on that ISP, DTLS upAuthorized TLS fallback test, UDP loss evidencePermanently force TLS for the org
Tunnel RTT healthy, app still slowKeep going: inspection, DNS, destination, ZDX Cloud PathStop at the Service Edge
Private ERP slow, internet fineZPA desk: connector health, tcpdump from connectorTraceroute the synthetic IP

Runbook — isolate, then prove

Side A — laptop / ISP (before you touch Zscaler policy)

  1. Scope

    How many users? One site or many ISPs? Same destination? Same time window? A single-user problem investigated as a cloud incident wastes the day.

  2. Identify the connected Service Edge

    ZCC tray → Advanced → Diagnostics. Record ZIA Edge, ZPA Edge if any, tunnel version, DTLS or TLS, ZCC version. Menu labels vary by ZCC version — capture a screenshot.

  3. Hotspot split

    Same laptop, same destination, mobile hotspot. If it becomes fast, the corporate Wi-Fi/LAN or that ISP path owns the ticket, not ZCC itself.

zscaler://client-connector/diagnostics
Training mock · not live

ZCC · Advanced · Diagnostics

Tunnel diagnostics

bom1-1.sme.zscaler.net (example)
Z-Tunnel 2.0 · DTLS (UDP 443)
zpa-se-ind-01.zscaler.net (example)
4.x.x.x

Authoritative signal is the Edge hostname in ZCC, not a GeoIP website. Dummy names for training.

Side B — ZIA path (internet / SaaS)

  1. Prefer Zscaler’s own tests

    Use the Zscaler Cloud Performance Test first. If licensed, ZDX Cloud Path per hop. Browser DevTools Timing next (DNS, TCP, TLS, TTFB). ICMP ping to a Zscaler IP can lie because ICMP is deprioritized.

  2. Controlled ON vs authorized bypass

    Same laptop, same Wi-Fi, same URL, similar time of day. Record download, upload, DNS, TCP connect, TLS, TTFB, page load. A faster bypass does not prove Zscaler is broken — the two paths may hit different CDNs. Bypass only under change control. Do not leave SSL inspection off.

  3. DTLS vs TLS

    DTLS uses UDP/443. Some ISPs throttle UDP. Compare DTLS vs TLS with traffic evidence (loss, stalls). Zscaler documents a TLS test via forwarding profile Primary Transport Selection, or (if allowed) user override + http://127.0.0.1:9000/zconfig then Restart Service. Do not make TLS permanent from one test. Official runbook: ZCC performance support.

  4. MTU / fragmentation

    Z-Tunnel adds overhead. Symptoms: large uploads stall, small APIs work. Windows: ping -f -l 1400 [Service Edge IP]. Linux: ping -M do -s 1400 [Service Edge IP]. Wireshark: ip.flags.mf == 1. MSS often needs ~1350–1400 in tunneled paths.

  5. DNS and SSL inspection

    If DevTools DNS is 300–800 ms, that is DNS, not the tunnel. If the browser cert issuer is Zscaler, inspection is on — compare one authorized inspection bypass for that destination only.

ZPA journey feel
User, broker, connector, and private app as four connected nodes
Backend tests happen on the App Connector, never from the user’s synthetic IP.

Side C — ZPA path (private app)

  1. Six domains

    User → ZPA Edge · Policy · Edge → Connector · Connector health · Connector → backend · Backend app. Measure each.

  2. Connector health

    systemctl status zpa-connector, CPU, disk, journalctl -u zpa-connector --since "1 hour ago". Connector must resolve and reach ZPA cloud on TCP/443 outbound. Dummy NXDOMAIN on the broker hostname is a DNS problem on the connector host, not a user laptop problem.

  3. Backend from the connector

    curl -vk https://192.168.1.101 · mtr 192.168.1.101 · sudo tcpdump -i any host 192.168.1.101 and tcp port 443 -nn -vv. Training IPs from the masterclass: connector 192.168.1.100, backend 192.168.1.101:443.

  4. Read the handshake

    SYN + SYN-ACK + ACK = path and port are open. Repeated SYN, no SYN-ACK = drop/route/backend down. SYN + RST = port closed or ACL reject. Then look at TLS time vs HTTP silence — silence after GET is the application, not ZPA transport.

https://admin.zscaler.com · ZPA · Diagnostics · User Status
Training mock · not live

ZPA Admin Portal → Diagnostics → User Status

User Status

203.0.113.25
zpa-se-ind-01.zscaler.net (example)
abc123-zpa-456 (example)
4.x.x.x

Portal path may vary by Zscaler UI version. Copy Connection ID into the TAC pack. Dummy values.

App Connector → backend (training IPs)
sudo tcpdump -i any host 192.168.1.101 and tcp port 443 -nn -vv
sudo tcpdump -i any host 192.168.1.101 and tcp port 443 -nn -w /tmp/backend_traffic.pcap
# Wireshark: tcp.analysis.retransmission  tls.handshake  tcp.flags.reset == 1

Source: masterclass pages on ZPA tcpdump + classroom sheet ZPA App Connector - Backend TCPDump Troubleshooting.

Runtime path after go-live

Flow 3 · RCA sequence
Observation Hypothesis Evidence Root cause

GeoIP mismatch, UDP throttle, and “Zscaler processing” are hypotheses until the pack exists.

Proof cockpit
Operations desk with a monitor showing health checks
TAC wants timestamps, Edge names, ON vs OFF, MTR, ZCC logs, and ZDX if licensed — not a Speedtest screenshot.
Jio case — hypothesis only

Classroom case: India user on Jio, “slow when ZCC is on.” Incorrect GeoIP (US/Israel) is a hypothesis. Validate public IP/ASN, several GeoIP sources including MaxMind, the actual connected Edge, RTT, and a hotspot comparison. Incorrect MaxMind ≠ automatic wrong Service Edge. Correction is prefix + geofeed (RFC 8805), not one IP. Recheck after MaxMind publishes; then TAC if the Edge is still wrong.

Traps and the TAC pack

TrapWhat it looks likeProof
Stopping at the Edge25 ms to ZIA, app still slowCloud Path / DevTools TTFB / destination hop
ICMP as truthHigh ping, fine HTTPSCloud Performance Test, TCP ACK timing
Speedtest as RCAFast Speedtest, slow CRMTime the real workflow
Synthetic IP tracerouteWeird 100.64 pathcurl/mtr/tcpdump from the connector
Permanent TLS / SSL off“It got faster”Authorized test only, then rollback
GeoIP as RCAMaxMind says USZCC Edge hostname + RTT + hotspot
Pilot checklist before TAC

Sample title: “Possible incorrect Service Edge / GeoIP — Jio India, RTT to connected Edge 210 ms, hotspot 35 ms.”

Unsafe vs safe

Unsafe: disable Zscaler, turn off SSL inspection for the company, traceroute a ZPA synthetic IP, tell TAC “it is slow.” Safe: isolate the hop, authorized bypass for one URL, TLS fallback as a timed test, connector-side tcpdump, full evidence pack.

Knowledge check

Six judgment items from the slowness masterclass. Pick one, then Check answers.

Q1

A user says “Zscaler is slow.” What is the first correct move?

Correct: b. The golden rule in the masterclass: never start with “Zscaler is slow.” Re-read Why + mental model.
Q2

erp.internal.example is slow. outlook.office.com is fine. Where do you work first?

Correct: a. Private FQDN is ZPA. Internet remaining healthy points off the ZIA tunnel. Re-read ZIA vs ZPA table.
Q3

MaxMind shows a Jio prefix in the US. What is true?

Correct: c. Incorrect MaxMind ≠ automatic wrong Edge. Re-read Jio case + traps.
Q4

Z-Tunnel 2.0 data plane default vs fallback?

Correct: b. Control channel is TLS/443 either way. Re-read Side B DTLS vs TLS.
Q5

User ping to a ZPA app hostname hits 100.64.10.50. Next step?

Correct: d. Synthetic IP is not the backend. Re-read Side C.
Q6

tcpdump from the connector shows repeated SYN, no SYN-ACK. What does that prove?

Correct: a. Handshake never completes. Policy deny and DTLS live on other segments. Re-read tcpdump table.

Sources

Related: ZIA + ZPA troubleshooting desk · ZCC troubleshooting · ZPA performance and MTU · App Connector troubleshooting · Logs, ZDX, five tickets · Zscaler troubleshooting lab